0

単一のテーブルの場合、ある列の重複を別の列の範囲外に制限する必要があります。

たとえば、テーブルが与えられた場合、それが の外側で一意であるdemographicsことを強制したいと思います。この演習に加えて、ビジネス ルールを介してレコードを更新することはできません。emailperson_iddemographics

demographicsテーブルに次のデータセットがあるとします。

id | email         | city    | person_id |
1  | one@email.com | Buffalo | 100       |
2  | two@email.com | Boston  | 200       |

demographicsこの挿入が問題ないように変更するにはどうすればよいですか。

INSERT INTO demographics (email, city, person_id) VALUES ('one@email.com', 'Miami', '100');

しかし、この挿入はエラーを引き起こします:

INSERT INTO demographics (email, city, person_id) VALUES ('two@email.com', 'Buffalo', '100');

?

4

1 に答える 1

1

BEFORE INSERT私が考えることができるこの制約を実装する唯一の方法はRAISE EXCEPTION、電子メールが別のperson_id. SELECTこれは、制約を作成する最も効率的な方法ではありません (挿入された行ごとに個別のテーブルが必要です) が、確実に機能します。

于 2013-11-13T18:44:31.730 に答える