我想知道为什么我的代码不起作用。 ideia用于验证当idseq添加到某个表时,查看是否已在任何其他表中存在相同的idseq。 以下代码在mySQL中生成ERROR 1235:
delimiter //
CREATE TRIGGER trigger_pagina
BEFORE INSERT ON pagina
FOR EACH ROW
BEGIN
IF (EXISTS(
SELECT R.idseq
FROM registo R
WHERE (NEW.idseq = R.idseq)
) )THEN
CALL Ilegal_Insert();
END IF;
END;
BEGIN
IF (EXISTS(
SELECT T.idseq
FROM tipo_registo T
WHERE (NEW.idseq = T.idseq)
)) THEN
CALL Ilegal_Insert();
END IF;
END;
BEGIN
IF (EXISTS(
SELECT V.idseq
FROM valor V
WHERE (NEW.idseq = V.idseq)
)) THEN
CALL Ilegal_Insert();
END IF;
END;
BEGIN
IF (EXISTS(
SELECT C.idseq
FROM campo C
WHERE (NEW.idseq = C.idseq)
)) THEN
CALL Ilegal_Insert();
END IF;
END;//
delimiter ;
提前致谢!
答案 0 :(得分:0)
你需要另一个最外面的root
块来封闭你上面的那些,比如
BEGIN ... END
这是因为 CREATE TRIGGER 实际上只允许触发器主体包含单个语句,并且 BEGIN ... END 被处理,及其内容,作为单语句。
是的,你可以(在这种情况下必须)在触发器体中使用嵌套的 BEGIN ... END 块。