SQL Server中的级联约束

在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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值