从一个表到多个表的引用约束

时间:2016-07-01 14:02:16

标签: sql-server-2008-r2

如果我有以下表格,是否可以在#TableNotes中创建约束,以检查InstanceId #Users中是否存在TableId == 1,并检查InstanceId是否#Companies如果TableId == 2?{/ p>,{}}}中存在1}}

create table Users(
    UserId int not null,
    TableId int not null default 1
)

create table Companies(
    CompanyId int not null,
    TableId int not null default 2
)

 create table TableNotes(
    InstanceId int not null,
    TableId int not null
 )

有没有办法在不使用触发器的情况下完成此任务?

1 个答案:

答案 0 :(得分:0)

我建议不要设计你的表,而是使用两列来保持参照完整性正确。我还假设您的意思是 TableId 而不是 ModelId 如果您仍然可以更改表格的设计,那么以下几行中的内容可能最适合您。

     CREATE TABLE TableNotes(
     TableId int not null,
     UserId int constraint fk_Users_Table_id foreign key references Users(TableId),
     CompanyId int constraint fk_Companies_Table_id foreign key references Companies(TableId)
     )

如果这不是一个选项,正如你所说,你唯一的选择就是使用触发器来控制它。