1

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 ;
4

1 回答 1

1

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

SELECT Palette0ColorA, Palette0ColorB INTO @CA, @CB FROM Themes WHERE ID=NEW.ThemeID
于 2012-05-31T21:53:43.567 回答