简体   繁体   English

更新错误后触发DB2

[英]DB2 trigger after update error

This is my first time using a trigger on my website using php. 这是我第一次使用php在我的网站上使用触发器。 What I'm trying to achieve is when the condition and location field (located in inventory table) is updated, the trigger will insert a row to LOG table. 我要达到的目的是,当条件和位置字段(位于清单表中)更新时,触发器将在LOG表中插入一行。

Here is the error shown when I chenged the condition and location field : 这是我选择条件和位置字段时显示的错误:

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

And here is my trigger code, I created the trigger using the data studio, and it succeeded : 这是我的触发器代码,我使用Data Studio创建了触发器,它成功完成了:

I'VE EDITED MY TRIGGER CODE AND LOG TABLE STRUCTURE, BUT STILL GENERATE THE SAME ERROR 我已经编辑了触发代码和日志表结构,但仍然会产生相同的错误

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);

Heres a sample UPDATE TRIGGER 这是一个示例UPDATE TRIGGER

this may not answer you question but i think it can help you to construct a better Trigger statement: 这可能不会回答您的问题,但我认为它可以帮助您构建更好的Trigger语句:

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 ;

Resource link( source ) 资源链接( 来源

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM