【发布时间】:2014-09-13 15:12:33
【问题描述】:
好的,所以我已经坚持了大约 2 个小时,但我仍然找不到解决方案。
我有 2 个数据库实例。
站点 1 可以说, 表 A ID 属性 1 foreignKey - (表 B 的主键)
站点 2 有, 表 B ID 属性1
我想在删除表 A 的记录时创建触发器。它主要检查站点 2 表 B 是否引用了该特定记录。如果它确实有该记录,我想防止删除发生。到目前为止,我想出了这个,
CREATE OR REPLACE TRIGGER CHECK_DEALERSHIP_USAGE
BEFORE DELETE on TBL_CARDEALERSHIP
FOR each ROW
declare
rowcnt number;
begin
SELECT COUNT(DEALERSHIP_ID) INTO rowcnt
from TBL_SALESPEOPLE@SITE1
where DEALERSHIP_ID = :NEW.DEALERSHIP_ID;
if (rowcnt>0) THEN
Raise_Application_Error (-20100, 'This dealership is used in the sales people table.');
end if;
end;
然后我这样做,
delete from TBL_CARDEALERSHIP
where DEALERSHIP_ID='83';
但它仍然删除它,即使我认为我在数据库中有记录
【问题讨论】:
-
在删除触发器中,您需要引用 old 记录,例如
where DEALERSHIP_ID = :OLD.DEALERSHIP_ID;
标签: oracle triggers cascading-deletes