SQL Server 2019如何创建来自不同表的多个外键约束
完全支持。所有主流关系型数据库(包括你当前用的SQL Server,从IDENTITY自增语法可判断)都允许单张表创建多个来自不同表的外键约束,这也是实现多表关联的基础设计,你这个场景属于典型的多对多关系映射,第三张表是教授和学生的关联中间表。
第三张表的创建语句参考如下:
create table TblProfStudent( relId int IDENTITY(1,1) PRIMARY KEY, -- 外键对应字段的类型必须和关联主表的主键类型完全一致 profId int NOT NULL, studentId int NOT NULL, -- 绑定关联教授表的外键 constraint FK_ProfStudent_Prof foreign key (profId) references TblProf(profId), -- 绑定关联学生表的外键 constraint FK_ProfStudent_Student foreign key (studentId) references TblStudent(studentId) );
注意事项
- 外键字段的数据类型、精度必须和对应主表的主键字段完全匹配,比如你两张主表的主键都是
int类型,外键字段就不能用varchar、bigint等其他类型,否则约束会创建失败 - 你可以根据实际业务需求给外键加级联规则,比如
ON DELETE CASCADE表示主表删除对应记录时,自动删除中间表的关联记录;不配置的话默认规则是:主表记录如果被中间表外键关联,就不允许直接删除 - 如果业务上要求同一个教授和同一个学生只能有一条关联记录,可以额外给
profId和studentId加联合唯一约束,避免重复脏数据
内容的提问来源于stack exchange,提问作者coderGirl
相关产品推荐
相关产品推荐

