更新后的DB2触发错误

更新后的DB2触发错误

问题描述:

这是我第一次在我的网站上使用php的触发器。我试图达到的条件和位置字段(位于库存表中)更新时,触发器将向LOG表中插入一行。更新后的DB2触发错误

下面是当我chenged状况和位置字段中显示的错误:

SQL0723N An error occurred in a triggered SQL statement in trigger "DB2ADMIN.CONDITI".   
Information returned for the error includes SQLCODE "-433", 
SQLSTATE "22001" and message tokens "Condition changed from bad ". SQLSTATE=09000 SQLCODE=-723 

这里是我的触发代码,我使用数据工作室创建的触发器,它成功了:

我已经编辑了扳机代码和日志表结构,但仍然会产生相同的错误

CREATE TRIGGER DB2ADMIN.CONDITION_LOG AFTER UPDATE OF CONDITION, LOCATION ON DB2ADMIN.INVENTORY 
REFERENCING OLD AS o NEW AS n 
FOR EACH ROW MODE DB2SQL NOT SECURED 
INSERT INTO LOG VALUES ('',CURRENT TIMESTAMP, o.CONDITION, n.CONDITION, o.LOCATION, n.LOCATION); 
+0

我想你坏的查询设计.. – 2013-04-08 07:07:38

+0

最后一列的数据太长。检查查询过程中最后一列的长度和您尝试插入的数据。 – Meherzad 2013-04-08 07:15:30

+0

@Meherzad最后一列的长度为1000个字符,应该足够了 – 2013-04-08 07:20:47

继承人样品UPDATE触发器

这可能不是回答你的问题,但我认为它可以帮助您构建一个更好的触发器声明:

DELIMITER $$ 
CREATE 
    TRIGGER `blog_after_update` AFTER UPDATE 
    ON `blog` 
    FOR EACH ROW BEGIN 
     IF NEW.deleted THEN 
      SET @changetype = 'DELETE'; 
     ELSE 
      SET @changetype = 'EDIT'; 
     END IF; 
     INSERT INTO audit (blog_id, changetype) VALUES (NEW.id, @changetype); 
    END$$ 
DELIMITER ; 

资源链接(source