这样一个触发器怎么写?

xbm2002 2003-10-15 08:06:35
有这样一个表:
table ( a char(3),
b char(3),
dm varchar2(8),
bz number(1))
这个表中以 a,b为主键,
有这样一组数据:
a,b,c,0
a,b,d,0
a,b,e,0
b,c,e,1
b,c,f,1
b,c,g,1
现在打算,当数据段中(a,b,c,0),(a,b,d,0),(a,b,e,0)中任的一个bz值被修改为1时,表中的与之相关的字段的bz的值全被修改为1,就是全被修改为(a,b,c,1),(a,b,d,1)
(a,b,e,1)
当数据段(b,c,e,1),(b,c,f,1),(b,c,g,1)中的任一个bz的值被修改为0时,表中相关字段被修改为(b,c,e,0),(b,c,f,0),(b,c,g,0)
请问用触发器可以实现吗?
...全文
33 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lastdrop 2003-10-16
  • 打赏
  • 举报
回复
你的表不是a,b为主键吗,怎么可能(a,b,c,0),(a,b,d,0),(a,b,e,0)同时存在?
beckhambobo 2003-10-16
  • 打赏
  • 举报
回复
create view table_view as select * from table;

create trigger table_tri
instead of update on table_view
for each row
begin
if :new.a='a' and :new.b='b' and :new.bz=1 then
update table set bz=1 where a='a' and b='b';
elsif :new.a='b' and :new.b='c' and :new.bz=0 then
update table set bz=0 where a='b' and b='c';
end if;
end;
/

楼主每次只要对视图进行update就可达到你的要求
csqno1 2003-10-16
  • 打赏
  • 举报
回复
CREATE OR REPLACE
TRIGGER tri_csdn
AFTER UPDATE OF bz ON table
FOR EACH ROW
DECLARE
begin
if :new.bz=1 then
UPDATE table SET bz=1 WHERE bz=:OLD.bz;
else
if :new.bz=0 then
UPDATE table SET bz=0 WHERE bz=:OLD.bz;
end if;
end if;
end tri_csdn;
csqno1 2003-10-16
  • 打赏
  • 举报
回复
CREATE OR REPLACE
TRIGGER tri_csdn
AFTER UPDATE OF bz ON table
FOR EACH ROW
DECLARE
begin
if :new.bz=1 then
UPDATE table SET bz=1 WHERE bz=:OLD.bz;
else
if :new.bz=0 then
UPDATE table SET bz=0 WHERE bz=:OLD.bz;
end if;
end tri_csdn;
xbm2002 2003-10-16
  • 打赏
  • 举报
回复
那位能帮忙给写一个全的,兄弟第一次写触发器,真是一点头绪都没有,在这里先谢谢了
分不够可以加!
lcz022 2003-10-16
  • 打赏
  • 举报
回复
select count(bz) into bz0 from table where bz='0'
if bz0>3 then
update table set bz='0'
select count(bz) into bz1 from table where bz='1'
if bz1>3 then
update set bz='1'
bzszp 2003-10-16
  • 打赏
  • 举报
回复
可以实现
使用old 和 new
xbm2002 2003-10-16
  • 打赏
  • 举报
回复
对了,我的表是以a,b,c为主键,但是我想修改的不是以主键为参考而是以a,b为参考
这才是我写这个帖子的目的所在,望各位指教!
xbm2002 2003-10-16
  • 打赏
  • 举报
回复
不好意思,是我写错了
应该是以 a,b,dm为主键
请问上述触发器需要修改吗?
xbm2002 2003-10-15
  • 打赏
  • 举报
回复
等了一晚上,自己顶一下吧!

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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