oracle 触发器只执行insert不执行update,delete了

createorreplacetriggertri_UserafterinsertorupdateordeleteonUSER_MAPPINGreferencingold... create or replace trigger tri_User
after insert or update or delete
on USER_MAPPING
referencing old as old_value
new as new_value
for each row
declare UNIQUEID varchar(32);
IDCARD varchar(18);
PHONENUM varchar(11);
c_num integer;
begin
SELECT COUNT(*) INTO c_num FROM USERS WHERE UNIQUEID = :new_value.UNIQUEID;
IF c_num = 1 THEN /* 1 存在 更新 删除 */
-- update UNIQUEID
--dbms_output.put_line(1);
if updating then
update USERS set IDCARD = :new_value.IDCARD,PHONENUM=:new_value.PHONENUM
where UNIQUEID = :new_value.UNIQUEID;
end if;
-- delete
if deleting then
delete from USERS where UNIQUEID = :old_value.UNIQUEID;
end if;
ELSIF c_num < 1 THEN -- 0 不存在 就插入 1 不执行
--insert 唯一ID (UNIQUEID ) 身份证号(IDCARD)手机号(PHONENUM) *\
-- insert UFNIQUEID
-- dbms_output.put_line(2);
if :new_value.IDCARD is null THEN
IDCARD := '';
end if;
if :new_value.PHONENUM is null THEN
PHONENUM :='';
end if;
if inserting then
insert into USERS(UNIQUEID,IDCARD,PHONENUM)
values(:new_value.UNIQUEID, :new_value.IDCARD, :new_value.PHONENUM);
end if;
END IF;
end;
user_mapping 是主表 users 是子表 ,像user_mapping中插入数据同时插入到users中,如果第二次插入时候判断如果users中有uniqueid就更新或者删除,不执行insert
展开
 我来答
mafangsan
2014-10-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2523万
展开全部
这个通常和关联表有关系,请查一下有几张表用这个标的主键做了外键,然后去看看那些表有无异常。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式