我有一个应用程序,它无法更新行,只能插入它们,但如果某些内容已插入数据库并且它尝试插入一行,则会生成duplicate key error
。
我尝试为底层数据库表创建触发器,因此如果它尝试插入存在的行,则会更改为更新。 像这样:
CREATE DEFINER = CURRENT_USER TRIGGER `Test`.`Job_BEFORE_INSERT` BEFORE INSERT ON `Job` FOR EACH ROW
BEGIN
INSERT INTO Job(id, createdAt, updatedAt, `name`,
version, ...)
VALUES(NEW.id, NEW.createdAt, NEW.updatedAt, NEW.name,
NEW.version, ...)
ON DUPLICATE KEY UPDATE
updatedAt=CURRENT_TIMESTAMP, `name`=VALUES(`name`), version=VALUES(version), ...;
END
但它在第一个插入时产生错误:
Error Code: 1442. Can't update table 'job' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我读到您无法在触发器或存储过程中更改同一个表。我想做一些不可能的事吗?如果行存在,则将插入更改为更新?