我正在为mysql创建一个触发器,当用户注册时,旧值将替换为+1作为admin的新值以显示新用户注册。
CREATE TRIGGER `admin_notification_insert`
AFTER INSER ON `userss`
FOR EACH ROW BEGIN
UPDATE `admin-notification`
SET NEW.`notification-count` = (OLD.`notification-count`+1)
WHERE `admin-notification`.`notification-id` =1;
END;
我在代码中有错误#1363 - There is no OLD row in on INSERT trigger
查询中可能出现的错误是什么?
答案 0 :(得分:1)
通过一些搜索,我能够这样做,所以我自己也回答了这个问题...................
mysource的链接是dev.mysql,我可以解决特定UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
帮助我的例子。我的解决方案的代码如下 -
delimiter |
CREATE TRIGGER `admin_notification_insert`
AFTER INSERT ON `users`
FOR EACH ROW BEGIN
UPDATE `admin-notification`
SET `admin-notification`.`notification-count` = `admin-notification`.`notification-count`+ 1
WHERE `admin-notification`.`notification-id` = '1';
END;
|
delimiter ;
答案 1 :(得分:0)
OLD
和NEW
指的是触发器所在的表格:userss
NOT admin-notification
你可以试试这个:
UPDATE `admin-notification`
SET `notification-count` = (
SELECT
new_nc
FROM (
SELECT
`notification-count`+1 as new_nc
FROM
`admin-notification`
WHERE
`admin-notification`.`notification-id` =1
) as tmp
)
WHERE
`admin-notification`.`notification-id` =1;