如何使用插入触发器后更新表字段?
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。
【讨论】:
以上是关于如何使用插入触发器后更新表字段?的主要内容,如果未能解决你的问题,请参考以下文章