关于deferred constraint的疑问,请教前辈们

[复制链接]
查看11 | 回复3 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
请问nondeferred constraints
与deferred constraint中的
initially immediate constraint有何区别?
两者都是在每条DML结束后进行约束检查。

回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
比如主外键约束的通过trigger实现自动更新的时候就派上用场了
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
前辈啊,小弟还是不明白。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
因为更新主键和外键一定有时间上的差异
所以通常情况下是无法完成的
通过这样可以在主键和外键都更新后才来检查是否是合法约束
给你个例子你可以测试一下:
(btw:其实你自己也可以做测试的,是吧,oracle有时完全可以自己动手来解决理论上的疑惑)
ALTER TABLE AAA ADD (CONSTRAINT AAA_PK PRIMARY KEY(a) DEFERRABLE) ;

ALTER TABLE BBB
ADD (CONSTRAINT BBB_FK FOREIGN KEY(a)
REFERENCES AAA(a)
ON DELETE CASCADE DEFERRABLE)

CREATE OR REPLACE TRIGGER ID_TRG AFTER UPDATE ON AAA FOR EACH ROW
BEGIN
UPDATE BBB SET a=:NEW.a WHERE a=:OLD.a;
END;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行