我对sql有这样的问题:
Table 1: ID_1 (Primary Key) | NAME | LASTNAME | EMAIL... Table 2: ID_2 (Primary Key) | NAME2 | LASTNAME2 | EMAIL...
通常使用约束,可以将其作为表2中的列 (例如,名称2)作为第一个表1的NAME的外键。
一般关系是一对多的。表1中列NAME中的一个值在表2中的NAME2列中多次使用。
现在我想要实现的是将规则一对一,所以我不能从表2中的表1中获得NAME的重复值。
是否需要触发器,或者在创建表时可以通过约束设置?
答案 0 :(得分:0)
实现这一目标的步骤:
这可以在创建表格时完成。
CREATE TABLE table2 (
...,
name2 varchar(255),
FOREIGN KEY (name2) REFERENCES table1(name),
UNIQUE (name2)
);
如果您已有桌子,请改用ALTER TABLE
。
尝试插入值已在表中的name2
的行时,将引发错误。
答案 1 :(得分:0)
是的,可以通过约束来设置。您可以在同一个字段上使用外键和唯一键。唯一约束将保证只有一个记录,其中一个引用主表(来自该外表)