数据库数据库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

如果两张表中的主键—外键联系是通过约束来建立的,则不能使用触发器来实现影响外键和主键的级联

相关主题
相关文档
最新文档