外键引用值仅使用一次

时间:2016-01-31 11:35:29

标签: mysql sql tsql

我对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的重复值。

是否需要触发器,或者在创建表时可以通过约束设置?

2 个答案:

答案 0 :(得分:0)

实现这一目标的步骤:

  1. Create foreign key constraint
  2. Create unique constraint
  3. 这可以在创建表格时完成。

    CREATE TABLE table2 (
      ...,
      name2 varchar(255),
      FOREIGN KEY (name2) REFERENCES table1(name),
      UNIQUE (name2)
    );
    

    如果您已有桌子,请改用ALTER TABLE

    尝试插入值已在表中的name2的行时,将引发错误。

答案 1 :(得分:0)

是的,可以通过约束来设置。您可以在同一个字段上使用外键和唯一键。唯一约束将保证只有一个记录,其中一个引用主表(来自该外表)