mysql查询错误中的触发器

时间:2013-06-20 09:21:43

标签: mysql triggers

我正在为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

查询中可能出现的错误是什么?

2 个答案:

答案 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)

OLDNEW指的是触发器所在的表格: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;