Mysql SQL触发器未执行…是否出错?
我有这个: 这是在之前的chars_insert上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
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中使用