在MYSQL中创建触发器时出现语法错误
我编写了一个触发器,在表1的update语句之后触发。如果表1中没有基于条件的行,则更新表2在MYSQL中创建触发器时出现语法错误,mysql,Mysql,我编写了一个触发器,在表1的update语句之后触发。如果表1中没有基于条件的行,则更新表2 CREATE TRIGGER trigger1 AFTER UPDATE ON my_database.table1 FOR EACH ROW BEGIN DECLARE cnt int; IF new.column1 = 1 THEN SELECT COUNT(1) INTO @cnt FROM my_database.table1 WHERE userID = 1 AND i
CREATE TRIGGER trigger1
AFTER UPDATE ON my_database.table1
FOR EACH ROW
BEGIN
DECLARE cnt int;
IF new.column1 = 1 THEN
SELECT COUNT(1) INTO @cnt FROM my_database.table1
WHERE userID = 1 AND isDeleted = 0;
IF cnt = 0 THEN
UPDATE my_database.table2
SET isDeleted = 1
WHERE userSeqID = new.userID;
END IF
它给了我第4行的错误,我无法理解这个问题每个IF语句都必须以END IF子句结尾。试试这句话-
DELIMITER $$
CREATE TRIGGER trigger1
AFTER UPDATE
ON my_database.table1
FOR EACH ROW
BEGIN
DECLARE cnt int;
IF NEW.column1 = 1 THEN
SELECT COUNT(1) INTO cnt FROM my_database.table1 WHERE userID = 1 AND isDeleted = 0;
IF cnt = 0 THEN
UPDATE my_database.table2 SET isDeleted = 1 WHERE userSeqID = NEW.userID;
END IF;
END IF;
END$$
DELIMITER ;
第4行的错误是因为没有使用分隔符 试试这个:
DELIMITER //
create trigger trigger1 after update on my_database.table1
for each row
begin
declare cnt int;
...
end if;
END;//
DELIMITER ;
您还需要在
select
语句后的行中添加END IF
,以及一个终端END
以匹配您的begin
,正如我在示例中所做的那样。我希望在select语句之后的第一个if中包含第二个if语句。我已更改了答案。但它在declare语句中仍然会给我相同的错误。请帮助我。请注意,您在first SELECT中设置了@cnt变量,但使用了cnt变量。我对此查询没有问题。还要注意使用分隔符。但首先要解决触发器内部的问题。非常感谢。它帮助了我