2012-04-13 12 views
2

Ich benutze MySql mit HeidiSql als IDE. Ich habe folgende Trigger:Was ist falsch an diesem Auslöser?

BEGIN 
declare blobpassed blob(50); 
declare gid integer(10); 
select lt.groupid into gid, GROUP_CONCAT(passed) into blobpassed from latest_tests lt 
    left join testcaseresults tcr on tcr.testcaseresultsid = lt.tcrid 
    left join grouping g on g.groupid = lt.groupid 

    where lt.tcrid = NEW.testcaseresultsid 
group by lt.groupid; 

if blobpassed REGEXP '[1,]+' THEN 
update grouping g 
set g.haspassed = 1 
where g.groupid = gid; 
END; 

Aber es sagt immer wieder, dass es einen Syntaxfehler um GROUP_CONCAT(passed) into blobpassed from latest_tests lt ist. Normalerweise bedeuten diese Fehler, dass vorher etwas nicht stimmt (also in diesem Fall mit gid). Aber ich sehe nicht, was ich falsch mache.

Kann mir jemand sagen, was mache ich falsch? Vielen Dank.

+0

Verwenden Sie diesen Code mit dem Rest der Trigger-Teile etwas wie diese 'CREATE TRIGGER trigget_name' ...' delimiter' .... 'delimiter;'? – Lion

+0

HeidiSQL kümmert sich darum. – Nacht

Antwort

0

In SELECT ... INTO die „in“ Teil wird nur einmal geschrieben, mit einer Variablenliste, so dass die korrekte Abfrage wäre:

select lt.groupid, GROUP_CONCAT(passed) into gid, blobpassed from latest_tests lt 
    left join testcaseresults tcr on tcr.testcaseresultsid = lt.tcrid 
    left join grouping g on g.groupid = lt.groupid 
    where lt.tcrid = NEW.testcaseresultsid 

Die „in“ Teil kann auch nach der Abfrage gestellt werden:

Verwandte Themen