質問:
UPDATE
/INSERT
トリガNEW
変数に列の値を選択する際に使用する正しい構文は何ですか?MySQLのトリガーでNEW列/変数にクエリから単一の値をコピー
詳細:ここ
は、[単純化]私が使用していたテーブルと同様にクエリです。この例の目的のために、私は再帰的なもの、この場合はコメントを選択しました(つまり、画像にコメントするだけでなくコメントにもコメントを付けることができます)。いつでも私はコメントのコメントが何であるか知りたいですが、テーブルにn回質問してその画像にアクセスしたくないので(なぜを拒否しているのですか)、私は挿入時にトリガーを持っていますターゲット画像をコピーします。
PICTURESテーブル:
CREATE TABLE IF NOT EXISTS pictures
(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)
コメント表:
CREATE TABLE IF NOT EXISTS comments
(
id INT NOT NULL AUTO_INCREMENT,
picture_id INT NOT NULL,
comment_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (picture_id) REFERENCES pictures (id),
FOREIGN KEY (comment_id) REFERENCES comments (id)
)
コメントトリガー:NEW.comment_id
とNEW.picture_id
がNOT NULL
あること注意、従って、それらは(FALSE
)がゼロにデフォルト。私の実際のプログラムでは、XOR
は、画像とコメントidの両方を割り当てる無効な試みを拒否しています。
CREATE TRIGGER bi_comments_fer BEFORE INSERT ON comments FOR EACH ROW
BEGIN
IF (NEW.comment_id)
THEN
select NEW.picture_id := picture_id from comments where id = NEW.comment_id;
END IF;
END
私はそう
select @NEW.picture_id := picture_id from comments where id = NEW.comment_id;
のように、@
符号を含めてみましたしかし、また、シンタックスエラーを上げたこと。誰も私にこれを修正する方法を教えてもらえますか?
「SELECT」が複数の値を返した場合(つまり、「id」が「UNIQUE」でなかった場合)はどうなるでしょうか?宇宙は崩壊するだろうか? – puk
@puk:複数の値を期待していない代入演算子の行に沿ってエラーが発生します...私の頭の上からそのままそれを思い出すことはできません。 – eggyal