2011-03-07 53 views
1

嗨 在这个TRIGGER语句中是否有任何错误。当我尝试在phpAdmin中运行它时,它给出的错误说“#1064 - 你的SQL语法有错误;检查相应的手册你的MySQL服务器版本正确的语法使用近“SELECT COUNT(*)到SIM_CCode_Count”。我不能让什么是错在this..please帮我MySQL在phpAdmin中触发错误

这是我的触发声明

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 

回答

3

如果没有关于你的要求和表格的正确解释以及你期望这个触发器做什么,那么很难说有没有问题在触发ES有.. 但据我可以看到有一些小的修正需要做的.. 试试这个代码,让知道您详细的要求..

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; 
+0

感谢您的快速reply..but仍然是其表现“#1064 - 你在你的SQL语法错误;检查对应于您的MySQL服务器版本正确的语法手册在第3行使用“ – 2011-03-07 14:30:55

+3

hmm ..尝试在分隔符中给// //在phpadmin中的SQL选项卡的文本框以及上面的代码 – Shijilal 2011-03-07 14:34:24

+0

感谢它的工作,像魅力..非常感谢你 – 2011-03-07 15:22:12

0

你必须申报触发语句前MySQL的语句分隔符:

DELIMITER | 

CREATE TRIGGER ... 
    (your code) 
END| 

DELIMITER ; 

否则MySQL的解释你;在此声明的声明和承诺执行immidiately代码。将分隔符更改为不同的字符时,可以安全地在触发器声明中使用分号。

在这里看到:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html