数据库数据库7
值或UNIUE列的值。
但是使用存储过程可以实现针对受外键约束限制的主键或UNIUE 列的值的删除和修改。这种操作一般都影响到多个表,所以一般使用级联删除或级联修改来实现。
当使用存储过程进行级联修改时,可以按以下步骤执行操作。
(1)以新的主键值或UNIUE列值向主表插入新的数据行,重复现存行的所有其他列的值。
(2)将依赖表中的外键改为新值。
(3)删除主表中的旧数据行。
当使用存储过程来实现级联删除时,可以按以下步骤进行操作:
(1)删除外键所在的行,或将外键修改为NULL或默认值。
(2)删除主表中的行。
从上面执行的级联删除和级联修改的步骤可以看出,使用存储过程来维护数据的完整性,并不是要替代原有的外键约束。它只是外键约束的补充,外键约束仍然保留在数据库中并起着主要的作用。
使用存储过程可以提供附加的安全性。可以赋予用户调用某些存储过程的权限,但不允许用户对基本表进行修改。
例如:建立了一个存储过程来实现针对LWK和ZZK表的级联删除。当用户从LWK表中删除记录时,也删除ZZK表中所有的相关数据。
use lwzz
go
create procedure delete_lwk
@lwzz varchar
as
begin
delete zzk
where bzry = @lwzz
delete lwk
where lwzz = @lwzz
end
go
如果两张表中的主键—外键联系是通过约束来建立的,则不能使用触发器来实现影响外键和主键的级联
相关主题