如何在MySQL触发器中获取结果集

时间:2012-05-31 20:38:54

标签: mysql triggers

BEFORE INSERT我正在尝试检查值。如果列为空,我想加载默认值 - 基于单独表中的行。我虽然下面的代码可以做我需要的但是我收到了错误。

  

不允许从触发器返回结果集执行已停止!

这是我的SQL,我假设它抱怨我的select语句。

delimiter |
CREATE TRIGGER `trg_Sites_ID` BEFORE INSERT ON Sites
FOR EACH ROW
BEGIN
  SELECT @CA:=Palette0ColorA,  @CB:=Palette0ColorB FROM Themes WHERE ID=NEW.ThemeID;
  SET NEW.ID = UUID();
  SET NEW.ColorA = IF(NEW.ColorA = '', @CA, NEW.ColorA);
  SET NEW.ColorB = IF(NEW.ColorB = '', @CB, NEW.ColorB);
END
|
delimiter ;

1 个答案:

答案 0 :(得分:1)

正如错误消息所示,您的SELECT尝试将数据返回给客户端。您可以使用SELECT ... INTO

SELECT Palette0ColorA, Palette0ColorB INTO @CA, @CB FROM Themes WHERE ID=NEW.ThemeID