我正在创建这样的触发器

CREATE TRIGGER trigger_academictermregistration AFTER UPDATE ON academictermregistration FOR EACH ROW
BEGIN
    DECLARE summary TEXT(65535);
    SET summary = '';
    IF(NEW.version <> OLD.version) THEN
        SET summary = concat(summary, '    @VER: ', OLD.version, '-->', NEW.version);
    END IF;
    IF(NEW.isDeleted <> OLD.isDeleted) THEN
        SET summary = concat(summary, '    @IS_DELETED: ', OLD.isDeleted, '-->', NEW.isDeleted);
    END IF;

    INSERT INTO auditinfo (entityId, entityName, importance, details, modifiedOn, modifiedBy)
        VALUE (NEW.id, 'AcademicTermRegistration', 1, summary, NOW(), NEW.modifiedBy);

    IF(NEW.id <> OLD.id) THEN
        INSERT INTO auditinfo (entityId, entityName, importance, details, timestamp, user_id)
        VALUE (OLD.id, 'AcademicTermRegistration', 5, concat('ID: ', OLD.id, '-->', NEW.id), NOW(), 'backend');
    END IF;
END

我有一个这样的触发器,它正在跟踪更新表后对列值所做的更改,但是如果任何值为null(例如isDeleted),则事后将其更新为不为null auditinfo表中没有详细信息

===============>>#1 票数:1

从引用-如果任何参数为NULL,则CONCAT()返回NULL。

使用COALESCE函数,例如-

SET summary = CONCAT(summary, '    @IS_DELETED: ', COALESCE(OLD.isDeleted, 'NULL'), '-->', COALESCE(NEW.isDeleted, 'NULL'));

另外,您可以使用CONCAT_WS()函数,它会在分隔符参数之后跳过所有NULL值-

SET summary = CONCAT_WS('', summary, '    @IS_DELETED: ', OLD.isDeleted, '-->', NEW.isDeleted);

  ask by Deepak translate from so

未解决问题?本站智能推荐:

1回复

在更新操作无法正常工作后应删除行的触发器

嗨,我正在尝试学习mysql,但是,在定义了触发器之后,该触发器应该在对表中的列进行更新操作之后才能工作,但它无法正常工作。 每当我更新此列时,它应该立即删除一行。(此列的类型为DATE,并在开始时声明为NULL)。 这是我的桌子结构 我尝试用存储过程添加一个元组 这是在Pr
1回复

触发器无法正常工作

我在一个名为update,insert,delete的触发器中使用以下代码。 问题是当触发器运行时它会更新所有余额总计在发票表中相同.....它应该根据相应的invoicelines sum()更新每个发票总额,而不是将它们更新为全部相同。 我已经坚持了几个小时,只是无法绕过它。
2回复

Sql触发器无法正常工作

嗨我有一个学生表,我有像用户名,用户类型,密码等列。我已经为这个表写了一个触发器,为usertype'学生'创建一个用户名,这是触发器代码 它之前正在工作,但现在它显示一些错误,表明在'=='学生'附近有语法错误)声明i varchar(2)。 我不知道如何解决它,请帮助你的宝贵答案。
1回复

触发器无法正常工作

我尝试在mysql数据库上执行触发器。 该命令成功执行,但是触发器不起作用。
1回复

触发器无法正常工作

我有一个触发器,其中更新客户部分在更新上正常工作。 我希望有人帮助我纠正剩余的内容,并告诉我该代码在更新/插入/删除触发器中可以正常工作的格式。 基本上,我需要做的是对发票行和付款进行审计,以进行插入/更新/删除。 审核行中的条目必须更新发票表金额和客户余额。 付款必须更新,以便调整
1回复

插入触发器后我的MySQL无法正常工作? 为什么?

我创建了一个类似于以下内容的触发器: 看来一切顺利。 但是,在我需要时似乎没有调用它。 这是一个例子: mysql>插入cdr(billsec,userfield)VALUES(60,1); 查询正常,影响1行,12条警告(0.00秒) 编辑:在这种情况下,警
2回复

插入触发器后无法在Mysql中工作

我试图在mysql中设置触发器。 实际上我正在尝试将最后插入的记录从notes表插入log_trigger,但是下面的代码不起作用。 请建议
1回复

我正在尝试在mysql中创建触发器,但无法正常工作

这是我的触发器: 我使用mysql变量,因为直接分配不起作用。 但是我发现这是可行的: 我还发现,将assigned_groups中的student_id列重命名为student_id_1是可行的,但这不是可行的解决方案,因为我必须进行许多这样的触发。 编辑:抱歉,我
1回复

插入触发器更新值后的mysql触发器

我想根据任务表中的任务状态更新列表表中的列表状态,如果所有taskid任务状态均为1,则两个表都将listid作为公共字段,如果所有taskid taskstatus不是1,则将列表状态更改为1然后将列表状态更改为0,以下是触发器。 我收到sql syntex错误,请让我知道哪里出了问题
1回复

MySQL数据库触发器无法正常工作

我有两个表,table1和table2。 SQL就像: 每次将一行插入到table1中时,我创建的触发器也应将该行插入到table2中。 但是在我将字符串'a'插入table1之后,这似乎是正确的。 我在表1中插入第二个字符串“ b”后,结果显示为错误。 。 这是