如何利用ORACLE触发器对新插入的记录,在符合一定条件时立即将其删除?
比如:表aa中,新插入一条记录或批量插入记录,表aa中字段a1有的值为1,有的为2,有的为3,现在要触发器实现:当插入后立即进行判断,发现a1的值为1时,立即进行删除,仅...
比如:表aa中,新插入一条记录或批量插入记录,表aa中字段a1有的值为1,有的为2,有的为3,现在要触发器实现:当插入后立即进行判断,发现a1的值为1时,立即进行删除,仅保留2或3的数据。
展开
推荐于2018-03-04 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:925
获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:
向TA提问 私信TA
关注
展开全部
强烈不建议使用这种方法,完全可以在触发器中判断后阻止插入的动作。
例子如下:
create or replace trigger tri_a
before insert on a
for each row
when (条件)
begin
raise_application_error(-20999,'Can't insert on this table . xxxxxxxxx .');
end;
不过非要按照你的想法实现,也可以,不过比较麻烦。
需要创建一个行级触发器以及一个表级触发器,还有一个用于存放表中主键的包变量。
例子如下:
create or replace trigger tri_a
before insert on a
for each row
when (条件)
begin
raise_application_error(-20999,'Can't insert on this table . xxxxxxxxx .');
end;
不过非要按照你的想法实现,也可以,不过比较麻烦。
需要创建一个行级触发器以及一个表级触发器,还有一个用于存放表中主键的包变量。
更多追问追答
追问
但阻止插入后客户端总不停地重复插入
怎么处理这种情况
展开全部
建议采用BEFORE触发器,在触发器中对相应数据进行判断,如果不符合就直接抛异常之类的,避免插入;
如果是采用AFTER触发器,插入后,要写两次日志;
触发器中是不能有事务操作之类的
如果是采用AFTER触发器,插入后,要写两次日志;
触发器中是不能有事务操作之类的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设计思路不是最好的,直接判断条件符合就插入,没必要插入了再删除,很累赘
更多追问追答
追问
问题是插入不成功客户端总是重复提交插入,怎么办
追答
代码里面 弹出提示啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询