informix数据库创建触发器的一个问题!!!

时间:2022-09-12 13:34:20
基于A表创建了如下一个触发器 t_insert 向B表写入数据: 
create trigger  ti_insert 
insert on   A referencing   new as new_ins     
for each row 
       ( 
       insert into B 
(mti,trantype,cardno, 
tranamt,srvtransdate 
time,devid,srvstan,hostrspcode)   
values ('003' ,'080100' ,'' ,'' , 
new_ins.mondatetime ,new_ins.termid ,'' ,'' )); 
这种方式在A表上创建完触发器后,如果后台进程下的应用程序删除A表中的某条记录,则总是抱错,总删除不掉; 
如果把触发器删掉,则后台进程下的应用程序删除A表中的记录就不会有问题。 
这是怎么回事? 
我的触发器建的有问题???

4 个解决方案

#1


你触发器的是insert 触发的,删除A表记录按理不会触发的。
什么错误号?

#2


错误码是:-256,尽然是无效的事务;
我还纳闷了
Transaction not available.

You cannot begin a transaction in this database because it does not
have a transaction log. In order to support transactions, you must
start a transaction log. With the INFORMIX-OnLine Dynamic Server, the
OnLine administrator uses the Databases screen of the Logical Logs menu
of DB-Monitor or ON-Monitor to start a transaction log. With other
database servers, use the START DATABASE statement.
我如果去掉这个触发器,则对这个表的操作就成功了,
如果加上这个触发器就抱着个错!!!

#3


大家帮帮忙,分析分析,这是怎么回事呢?

#4


ontape -s -U dbname

#1


你触发器的是insert 触发的,删除A表记录按理不会触发的。
什么错误号?

#2


错误码是:-256,尽然是无效的事务;
我还纳闷了
Transaction not available.

You cannot begin a transaction in this database because it does not
have a transaction log. In order to support transactions, you must
start a transaction log. With the INFORMIX-OnLine Dynamic Server, the
OnLine administrator uses the Databases screen of the Logical Logs menu
of DB-Monitor or ON-Monitor to start a transaction log. With other
database servers, use the START DATABASE statement.
我如果去掉这个触发器,则对这个表的操作就成功了,
如果加上这个触发器就抱着个错!!!

#3


大家帮帮忙,分析分析,这是怎么回事呢?

#4


ontape -s -U dbname