Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询错误中的触发器_Mysql_Triggers - Fatal编程技术网

mysql查询错误中的触发器

mysql查询错误中的触发器,mysql,triggers,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-notific

我正在为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-插入触发器时没有旧行


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

OLD
NEW
指的是触发器所在的表:
userss
NOT
管理员通知

您可以尝试以下方法:

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;

通过一些搜索,我能够做到这一点,所以我自己也在回答这个问题

mysource的链接与示例中的链接相同,我能够解决特定的
更新test4 SET b4=b4+1,其中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 ;

我认为错误信息的措辞相当清楚。您处于
INSERT
触发器中。这意味着您正在处理一行,直到现在,该行还不存在于表中。因此,您希望
OLD
为您提供什么访问权限?除非你能解释,否则回答将是一个猜测游戏,因为似乎有一个基本的错误。当我在触发器
#1064中用你的sql查询替换我的sql查询时,仍然显示错误-你的sql语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“更新”
admin notification`SET
notification count
=(选择“在第4行”这是整个触发器,我只使用了一个。我的意思是在查询中显示更新后的触发器…给你这个错误的触发器。你可能是把它复杂化了。我希望模式是
UPDATE table SET column=column+1,其中condition
@AndriyM goddammit你说得对:|我有多瞎…th你应该把答案贴出来