Mysql SQL触发器未执行…是否出错?

Mysql SQL触发器未执行…是否出错?,mysql,sql,triggers,navicat,Mysql,Sql,Triggers,Navicat,我有这个: 这是在之前的chars_insert上 BEGIN IF EXISTS (SELECT * FROM chars WHERE accid = NEW.accid) BEGIN INSERT INTO `char_vars` SET `charid = NEW.charid, `varname` = `NotFirstChar`, `value` = 1; END INSERT INTO `char_equip` SET

我有这个:

这是在之前的chars_insert上

BEGIN
    IF EXISTS (SELECT * FROM chars WHERE accid = NEW.accid)
    BEGIN
            INSERT INTO `char_vars` SET `charid = NEW.charid, `varname` = `NotFirstChar`, `value` = 1;
    END

    INSERT INTO `char_equip`     SET `charid` = NEW.charid;
    INSERT INTO `char_exp`       SET `charid` = NEW.charid;
    INSERT INTO `char_jobs`      SET `charid` = NEW.charid;
    INSERT INTO `char_pet`  SET `charid` = NEW.charid;
    INSERT INTO `char_points`    SET `charid` = NEW.charid;
    INSERT INTO `char_profile`   SET `charid` = NEW.charid;
    INSERT INTO `char_storage`   SET `charid` = NEW.charid;
    INSERT INTO `char_inventory` SET `charid` = NEW.charid;
END

我刚刚添加了IF-EXISTS部分…它打破了触发器。我试图找出一个accountid是否已经有一个字符,如果已经有了,则在创建的字符中添加一个变量,说明这不是他们的第一个字符。它说错误在IF EXISTS行上,但我看不到错误…请帮助?

尝试用以下方式更改MySQL的代码:

BEGIN
    IF EXISTS (SELECT * FROM chars WHERE accid = NEW.accid) THEN
            INSERT INTO `char_vars` SET `charid` = NEW.charid, `varname` = `NotFirstChar`, `value` = 1;
    END IF;

    INSERT INTO `char_equip`     SET `charid` = NEW.charid;
    INSERT INTO `char_exp`       SET `charid` = NEW.charid;
    INSERT INTO `char_jobs`      SET `charid` = NEW.charid;
    INSERT INTO `char_pet`  SET `charid` = NEW.charid;
    INSERT INTO `char_points`    SET `charid` = NEW.charid;
    INSERT INTO `char_profile`   SET `charid` = NEW.charid;
    INSERT INTO `char_storage`   SET `charid` = NEW.charid;
    INSERT INTO `char_inventory` SET `charid` = NEW.charid;
END

另外,如果您的
NotFirstChars
是一个常量字符串(而不是字段名),您应该更改引号:
'NotFirstChars'

触发器和过程的语法往往是特定于实现的。请用您正在使用的SQL方言进行标记。@Turophile SQL server 2012、MySQL和在Navicat中使用