住所用のmysqlデータベーステーブルがあり、郵便番号/番地/町の個別の列が含まれています。
列の 1 つだけではなく、完全なテーブル エントリが一意であることを確認するにはどうすればよいですか?
住所用のmysqlデータベーステーブルがあり、郵便番号/番地/町の個別の列が含まれています。
列の 1 つだけではなく、完全なテーブル エントリが一意であることを確認するにはどうすればよいですか?
で複合キーを作成し{post code, street, town}
ます。
キーは、プライマリ (PRIMARY KEY) または代替 (UNIQUE 制約) にすることができます。
ところで、2 つtown
の異なる が同じものを持つことはできpost code
ますか? そうでない場合はtown
、キーに は必要ありません。town
実際、別のテーブルに「抽出」してモデルを正規化することを検討してください。
INSERT
データベース テーブルには複数の一意のキーがある場合があるため、テーブルに設定した制約に違反するクエリはすべて拒否されます。
他の列を一意に設定するだけで、問題が解決するはずです。
mysql では、n 個のフィールドまたは列に対して一意のキーを使用できます。この列を unique として宣言すると、mysql は重複の制約をチェックします。詳細については、このmysql の一意のキーをお読みください
「UNIQUE および PRIMARY KEY 制約はどちらも、列または列のセットの一意性を保証します。」
しかし、ユーザーを快適にするためのフロントエンドの検証をお勧めします (念のため、考えていませんでした;))