2011-03-07 3 views
1

Salut Y a-t-il une erreur dans cette instruction TRIGGER? Quand j'essaie d'exécuter ceci dans phpAdmin, j'obtiens une erreur en disant "# 1064 - Vous avez une erreur dans votre syntaxe SQL, consultez le manuel correspondant à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité « SELECT COUNT (*) dans SIM_CCode_Count » .Je ne peux pas obtenir ce qui est mal dans this..please me aiderMySQL Trigger ERROR dans phpAdmin

Ceci est ma déclaration de déclenchement

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 

Répondre

3

Sans explication appropriée au sujet de votre exigence et des tables et de ce que vous attendez de ce déclencheur, il est très difficile de dire si es là dans votre déclencheur .. Mais pour autant que je peux voir, il y a une correction mineure doit être fait .. Essayez ce Code et faire savoir en détail vos besoins ..

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

Merci pour le reply..but rapide encore sa montrant « # 1064 - Vous avez une erreur dans votre syntaxe SQL; vérifier le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe utiliser près de '' à la ligne 3 " –

+3

hmm .. Essayez de donner // dans le délimiteur Textbox de l'onglet SQL dans phpadmin avec le code ci-dessus – Shijilal

+0

Merci, il a travaillé comme le charme .. Merci beaucoup –

0

Vous devez déclarer délimiteur-déclaration mysql avant l'instruction de déclenchement:

DELIMITER | 

CREATE TRIGGER ... 
    (your code) 
END| 

DELIMITER ; 

Sinon MySQL interprète votre ; dans cette déclaration que cOMMIT et exécute le code immidiately. Avec le délimiteur changé en un caractère différent, vous pouvez utiliser le point-virgule à l'intérieur de la déclaration de déclenchement en toute sécurité.

Voir ici: http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html