好的,所以我现在已经坚持了大约2个小时,我仍然找不到解决方案。
我有2个数据库实例。
网站1可以说, 表A. ID attrib1 foreignKey - (表B的主键)
网站2有, 表B. ID attrib1
我想在删除表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';
但即使我在数据库中有记录,它仍会删除它
答案 0 :(得分:0)
正如DrabJay在评论中所说,删除触发器中的新记录为NULL,因为它在删除后。
但是,坦率地说,你正在犯这个错误。这种事情应该用外键来完成,而不是在触发器中完成。
CREATE TABLE TBL_CARDEALERSHIP (
... columns ...
CONSTRAINT fk_salesppl FOREIGN KEY (dealership_id)
REFERENCES tbl_salespeople (dealership_id)
);