如何写这个触发器:当更新表a一记录时,当发现更新的记录某一字段为一特定值时,就删除此记录?

forhelp 2003-10-20 08:56:51
??
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
forhelp 2003-10-20
  • 打赏
  • 举报
回复
先给分后测试,谢谢
yangqingdelphi 2003-10-20
  • 打赏
  • 举报
回复
表aaaa结构.
CREATE TABLE AAAA
(
NO VARCHAR2(10)
)
这种情况是变异表处理.我测试成功.
yangqingdelphi 2003-10-20
  • 打赏
  • 举报
回复
行级触发器记录条件是否满足.
CREATE OR REPLACE TRIGGER aaaa_test
before Update
ON aaaa REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
if :NEW.no='10' then
aaaa_package.dele_bool:='1';
end if;
END;
语句级执行.
CREATE OR REPLACE TRIGGER aaaa_test1
after Update
ON aaaa REFERENCING NEW AS NEW OLD AS OLD
BEGIN
if aaaa_package.dele_bool='1' then
delete aaaa where no='10';
aaaa_package.dele_bool:='0';
end if;
END;
包体记录判断条件
CREATE OR REPLACE package aaaa_package
IS
v_deleteID aaaa.no%type;
dele_bool char(1):='0';
end aaaa_package;
/


Nickle_Final 2003-10-20
  • 打赏
  • 举报
回复
关注!
forhelp 2003-10-20
  • 打赏
  • 举报
回复
to sanoul:
这会有什么问题了?又如何解决了?
sanoul 2003-10-20
  • 打赏
  • 举报
回复
这个处理属于异变表处理
forhelp 2003-10-20
  • 打赏
  • 举报
回复
to LGQDUCKY(飘):
你这是写在触发器里面的语句吗?我的意思是当更新一记录时触发一触发器,在触发器内部根据具体的情况再做删除处理。但我试了一下发现好像在触发器内不能实现此功能,不知道是不是触发器真的不能实现此功能?
LGQDUCKY 2003-10-20
  • 打赏
  • 举报
回复
首先判断这个字段的值
SELECT AA INTO S_AA FROM TABLE WHERE ID=。。。
IF s_aa ='XXX' then
DELETE ....
ELSE
UPDATE ......

end if;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧