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 に答える