在SQL Server中,用户可以通过级联约束将多张表格联系在一起。通过级联约束,用户在更新表A的时候,系统会将信息自动同步至表B的对应列中。级联约束创建代码如下:
/* SUBTABLE表示从表,PRITABLE表示主表 */
ALTER TABLE <SUBTABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> FOREIGN KEY(SUBTABLE_PK)
REFERENCES <PRITABLE_NAME>(PRITABLE_PK)
<ON DELETE CASCADE, ON UPDATE CASCADE>|<ON DELETE NO ACTION, ON UPDATE NO ACTION>;
GO;
ON DELETE CASCADE
表示你已经建立了一个级联删除,你可以用同样的方法建立级联更新。
ON DELETE NO ACTION
表示当用户执行删除操作时,如果表中的外键已被其他表中的行引用,则返回一个错误并回滚操作。对应的更新操作也以此类推。
如果你想要删除一张表中的级联约束,你可以通过DROP来实现:
ALTER TABLE <TABLE_NAME>
DROP CONATRAINT <CONSTRAINT_NAME>;
GO;
如果你忘了你的table中有哪些约束,你可以通过“sp_help <TABLE_NAME>
”来查询表中已经存在的约束。
示例
设数据库DataBase中含有表Student、表Score,且:
Student((PK)stu_ID, stu_name, stu_class);
Score((PK, FK)stu_ID, stu_score);
1、 创建表格间的级联删除
ALTER TABLE Score
ADD CONSTRAINT FK_CONSTRAINT FOREIGN KEY(stu_ID)
REFERENCES Student(stu_ID)
ON DELETE CASCADE;
GO;
2、 删除表格间的级联约束
sp_help Score; /* 通过这条指令可以查找出Score的约束 */
ALTER TABLE Score
DROP CONSTRAINT FK_CONSTRAINT;
GO;