扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
trigger的触发条件是insert or update,他跟字段名无关,所以当你2个一起执行的时候,就会出现这样的情况:update 表534的时候,触发trigger:hjx_formtable534_inser
成都网站建设、网站设计服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!
533也跟着update;接着触发hjx_formtable533_update,这时又把534也update了。从此走上死循环的不归路。。。。。。
其实可以这样(我不知道你哪个table1,哪个table2)。table1的trigger设置为affer,那么另外一个trigger设置为before,这样理论上应该可以同时触发2个 trigger而不会存在循环问题,我才下班,还没来得及试验,不好意思
可以创建这样一个触发器,在这个时间段内插入数据就报错,数据插不进去就可以了,代码如下:
create
or
replace
trigger
aa_trigger2
before
insert
on
aa
referencing
new
as
n
old
as
o
for
each
row
when
(to_char(sysdate,'hh')
=
'22'
)
declare
begin
raise_application_error(-20009,
'该时间段内禁止插入数据');
exception
when
others
then
raise_application_error(-20009,
'该时间段内禁止插入数据');
end;
--禁用
alter table [tablename]
disable all trigger
--恢复
alter table [tablename]
enable all trigger
如果你想禁用数据库中所有的触发器,那你只能写存储过程实现,找出所有的表,然后逐一禁用
--关闭某表上所有trriger
alter table table_name disable all triggers;
--开启某表上所有trriger
alter table table_name enable all triggers
本人也是 学习者。认为是 INSERT or UPDATE 错误。因该是前或后出发,然后分别建立两个触发器吧。分两种情况。
这又 INSERT 又 UPDATE
导致:old.stattag:new.stattag 错误。
和平时输入一样,用键盘输入C语言中的逻辑或 ||,只需要同时按住键盘上的“Shift + \”即可。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流