0

对于单个表,我需要将一列的重复项限制在另一列的范围之外。

例如,给定一个demographics表,我想强制它emailperson_id. 添加到此练习中,demographics无法通过业务规则更新记录。

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 回答