这个触发器有什么问题?

时间:2012-04-13 19:58:50

标签: mysql ide triggers syntax-error heidisql

我正在使用MySql和HeidiSql作为IDE。我有以下触发器:

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;

但它一直在说GROUP_CONCAT(passed) into blobpassed from latest_tests lt周围存在语法错误。通常,这些错误意味着在此之前出现了问题(因此,在这种情况下,使用gid)。但我不明白我做错了什么。

有人能告诉我我做错了什么吗?谢谢。

1 个答案:

答案 0 :(得分:0)

SELECT ... INTO中,“into”部分只写一次,带有变量列表,因此正确的查询将是:

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

“into”部分也可以放在查询之后:

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