2 votes

Quel est le problème avec cette gâchette ?

J'utilise MySql avec HeidiSql comme IDE. J'ai le trigger suivant :

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;

Mais il continue à dire qu'il y a une erreur de syntaxe autour de GROUP_CONCAT(passed) into blobpassed from latest_tests lt . Habituellement, ces erreurs signifient que quelque chose ne va pas avant (donc, dans ce cas, avec gid). Mais je ne vois pas ce que je fais de mal.

Quelqu'un peut-il me dire ce que je fais mal ? Merci.

0voto

Joni Points 46728

Sur SÉLECTIONNEZ ... DANS la partie "into" n'est écrite qu'une seule fois, avec une liste de variables, donc la requête correcte serait :

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

La partie "dans" peut également être placée après la requête :

select lt.groupid, GROUP_CONCAT(passed) 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
    into gid, blobpassed

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X