如何使用插入触发器后更新表字段?

Posted

技术标签:

【中文标题】如何使用插入触发器后更新表字段?【英文标题】:How to update a table field using after insert trigger? 【发布时间】:2021-07-27 15:19:05 【问题描述】:

我想用 MD5() 更新插入的行字段名称为“hash_code”。

DELIMITER
    //
CREATE TRIGGER `make_hash2` AFTER  INSERT ON
    `newtable` FOR EACH ROW
BEGIN
    DECLARE
        _id INTEGER ;
    SELECT
        id
    INTO _id
FROM
    `newtable`
ORDER BY `id`
DESC
LIMIT 1;

 

UPDATE
    `newtable`
SET
    `hash_code` = MD5(_id)
WHERE
    id = _id ;
END

我尝试使用以下代码,但在插入时抛出以下错误。

#1442 - 无法更新存储函数/触发器中的表“newtable”,因为它已被调用此存储函数/触发器的语句使用

【问题讨论】:

我不认为你可以用触发器做所有事情。也许尝试使用存储过程。看看here 【参考方案1】:

如果您希望 hash_code 成为 id 的 md5() 哈希,您可以使用生成的列:

alter table newtable add column hash_code varchar(32) as
     (md5(id))

Here 是一个 dbfiddle。

【讨论】:

以上是关于如何使用插入触发器后更新表字段?的主要内容,如果未能解决你的问题,请参考以下文章