在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 ;
答案 0 :(得分:1)
正如错误消息所示,您的SELECT
尝试将数据返回给客户端。您可以使用SELECT ... INTO
:
SELECT Palette0ColorA, Palette0ColorB INTO @CA, @CB FROM Themes WHERE ID=NEW.ThemeID