webForumDet fria alternativet

[MySQL] Declare i Trigger

4 svar · 440 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#1

Varför fungerar inte följande kod:

delimiter //

DROP TRIGGER IF EXISTS newtransaction //

CREATE TRIGGER newtransaction AFTER INSERT ON transactions

FOR EACH ROW BEGIN

IF NEW.type = 1 THEN
	DECLARE stname VARCHAR(15);
	SELECT sname INTO stname FROM stockp WHERE stock = NEW.stock;
END IF;
END; 
//

delimiter ;

Jag får felet:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE stname VARCHAR(15);
END IF;
END' at line 6

Den verkar inte ta DECLARE i min trigger? Om jag skippar DECLARE så får jag istället det logiska felet att stname inte är deklarerad (när den tolkar SELECT ... INTO-raden).

Jag kör: mysql-server-5.0.45

GeinMedlem sedan sep. 20005 700 inlägg
#2

Aha, declare måste komma först i BEGIN-blocket. :r

SPiNMedlem sedan mars 20007 896 inlägg
#3

Går det bättre om du deklarerar den utanför if-satsen, kanske?

SPiNMedlem sedan mars 20007 896 inlägg
#4

Oj, vad långsam jag var. :r

GeinMedlem sedan sep. 20005 700 inlägg
#5

Tack för svaret, trots allt! (y)

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)