【发布时间】:2017-05-23 02:35:33
【问题描述】:
我真的不擅长 SQL,但我正在努力使我的数据库尽可能简单和简约。不是重复值,而是使用引用和 id。
现在插入查询后出现错误
1442 - 无法更新存储函数/触发器中的“已签名”表,因为它已被调用此存储函数/触发器的语句使用
当触发器被禁用时可以插入查询。但是我的查询只是从表'users'中读取,所以不应该有冲突。我读了一些关于死锁的东西——查询在使用它或类似的东西时锁定了表,因此触发器不能更新一行?想法我怎么能做到这一点?
我简化了我的查询,所以只有重要的东西在那里。
查询:
INSERT INTO signed (time_of_start, player)
SELECT time_of_game_id, users.user_id
FROM time_of_game, users
WHERE time_of_game.time_of_start = "2017-02-01 12:00:00"
AND users.steamid = "1234567890123456";
触发器:
CREATE TRIGGER `payment_for_joining`
AFTER INSERT ON `signed`
FOR EACH ROW
UPDATE users
SET users.credit = users.credit-1
WHERE users.user_id = NEW.player
【问题讨论】:
标签: mysql triggers mysql-error-1442