!!!!!初学oracle写了个触发器,执行时出现错误怎么办??
create or replace trigger TRG_VT_BBS_BOARD_DELETE
before delete on vt_project
for each row
declare
-- local variables here
begin
delete vt_bbs_board where blockid=:old.projectid;
delete vt_bbs_boardmaster where blockid=:old.projectid;
exception
when others then
raise_application_error(-20000,'ERROR trg_pets_upper_pet_kind: ' || SQLERRM);
end TRG_VT_BBS_BOARD_DELETE;
当我只有一个删除项(delete vt_bbs_board where blockid=:old.projectid;)时没错误,但是加上delete vt_bbs_boardmaster where blockid=:old.projectid;这一下项,执行vt_project删除记录时就出现错误,是不是不能这样写呀?
问题点数:10、回复次数:6Top
1 楼mosquitoxh((IT,中间件,架构)http://it.paiming.org/bbs)回复于 2006-03-10 11:54:19 得分 0
什么错误?Top
2 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-10 12:01:07 得分 3
vt_bbs_board和vt_bbs_boardmaster 是不是有外键引用?Top
3 楼arcticfox110(山狐)回复于 2006-03-10 12:33:36 得分 0
谢谢你的回复,vt_bbs_board 主键BLOCKID
vt_bbs_boardmaster 主键BLOCKID, MEMBERID
是不是要删除vt_bbs_boardmaster中的BLOCKID主键Top
4 楼caizhen2000_82(猛将兄!!!)回复于 2006-03-10 12:45:16 得分 3
vt_bbs_boardmaster 主键MEMBERID是不是和别的外键相连啊??Top
5 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-10 12:48:30 得分 4
如果两个表有外键引用,就设置级联删除,那在触发器里只需要删除主表记录就可以了,不用两条delete语句.Top
6 楼arcticfox110(山狐)回复于 2006-03-10 12:50:03 得分 0
是阿,MEMBERID还是vt_bbs_member表的主键,我该怎么办,是不是要先删除vt_bbs_member表中的记录再加上delete vt_bbs_member where projectid=:old.projectid;
Top




