MySQL Trigger ERROR в phpAdmin - PullRequest
       36

MySQL Trigger ERROR в phpAdmin

1 голос
/ 07 марта 2011

Привет Есть ли какая-либо ошибка в этом заявлении TRIGGER. Когда я пытаюсь запустить это в phpAdmin, он дает ошибку, говоря: «# 1064 - у вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем версии вашего сервера MySQL для используйте рядом с «SELECT Count (*) в 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

Ответы [ 2 ]

3 голосов
/ 07 марта 2011

Без надлежащего объяснения ваших требований и таблиц, а также того, что вы ожидаете от этого триггера, очень трудно сказать, есть ли какие-либо проблемы в вашем триггере. Но, насколько я вижу, есть небольшая коррекциябыть сделано .. Попробуйте этот код и подробно опишите ваши требования ..

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 голосов
/ 07 марта 2011

Вы должны объявить разделитель оператора mysql перед оператором триггера:

DELIMITER |

CREATE TRIGGER ...
    (your code)
END|

DELIMITER ;

В противном случае MySQL интерпретирует ваш ; в этом выражении как оператор commit и выполняет код непосредственно После изменения разделителя на другой символ вы можете безопасно использовать точку с запятой внутри объявления триггера.

Смотрите здесь: http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

...