phpmyAdmin 中的 MySQL 触发器错误
Posted
技术标签:
【中文标题】phpmyAdmin 中的 MySQL 触发器错误【英文标题】:MySQL Trigger ERROR in phpAdmin 【发布时间】:2011-07-10 09:27:55 【问题描述】:嗨 此 TRIGGER 语句中是否有任何错误。当我尝试在 phpAdmin 中运行它时,它会给出错误提示“#1064 - 您的 SQL 语法有错误;请查看与您的 mysql 服务器版本相对应的手册以获取正确的语法在“SELECT Count(*) into SIM_CCode_Count”附近使用。我不明白这有什么问题..请帮助我
这是我的触发语句
CREATE TRIGGER Is_CountryCode_There After INSERT on mr_details FOR EACH ROW
BEGIN
DECLARE SIM_CCode_Count INTEGER;
DECLARE NET_CCode_Count INTEGER;
SELECT Count(*) into SIM_CCode_Count FROM Country_Main where CountryCode=NEW.SimCntISO;
IF SIM_CCode_Count=0 THEN
INSERT INTO Country_Main(CountryCode,CountryName) Values(NEW.SIMCntISO,"Unknown");
END IF
If NEW.SimCntISO<>NEW.NetCntISO then
SELECT Count(*) into NET_CCode_Count FROM Country_Main
where CountryCode=NEW.NetCntISO
IF NET_CCode_Count=0 THEN
INSERT INTO Country_Main(CountryCode,CountryName) Values(NEW.NETCntISO,"Unknown");
END IF
END IF
END
【问题讨论】:
【参考方案1】:如果没有正确解释您的要求和表格以及您期望此触发器做什么,很难说您的触发器中是否存在任何问题.. 但据我所知,需要做一些小的修正。 试试这个代码,并详细说明您的要求..
CREATE TRIGGER Is_CountryCode_There After INSERT on mr_details FOR EACH ROW
BEGIN
DECLARE SIM_CCode_Count INTEGER;
DECLARE NET_CCode_Count INTEGER;
SELECT Count(*) into SIM_CCode_Count FROM Country_Main where CountryCode=NEW.SimCntISO;
IF SIM_CCode_Count=0 THEN
INSERT INTO Country_Main(CountryCode,CountryName) Values(NEW.SIMCntISO,"Unknown");
END IF;
If (NEW.SimCntISO<>NEW.NetCntISO) then
SELECT Count(*) into NET_CCode_Count FROM Country_Main
where CountryCode=NEW.NetCntISO;
IF NET_CCode_Count=0 THEN
INSERT INTO Country_Main(CountryCode,CountryName) Values(NEW.NETCntISO,"Unknown");
END IF;
End IF;
END;
【讨论】:
感谢您的快速回复..但仍然显示“#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 ' 附近使用的正确语法' 在第 3 行“ hmm.. 尝试在 phpadmin 的 SQL 选项卡的分隔符文本框中给出 // 以及上面的代码【参考方案2】:你必须在触发语句之前声明一个mysql-statement分隔符:
DELIMITER |
CREATE TRIGGER ...
(your code)
END|
DELIMITER ;
否则 MySQL 会将此语句中的 ;
解释为语句提交并立即执行代码。将分隔符更改为不同的字符后,您可以安全地在触发器声明中使用分号。
请看这里:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
【讨论】:
以上是关于phpmyAdmin 中的 MySQL 触发器错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试编写 MySQL 触发器以替换 phpmyadmin 上的 CHECK 约束时出现语法错误
更新前的 MySQL 使用 PhpMyAdmin 触发插入语法错误