-1

トリガーを作成しようとしていますがCREATE TRIGGERドキュメントのように WHEN ステートメントを使用すると構文エラーが発生します。

もちろん、条件を関数に入れることもできますが、これははるかに遅く、美しくないと思います

CREATE TRIGGER insert_test
AFTER INSERT
ON mountain_stats
FOR EACH ROW
WHEN(NOT EXISTS(SELECT * 
FROM mountain_stats_history
WHERE country=NEW.country AND key=NEW.key AND value=NEW.value))
EXECUTE PROCEDURE update_mountain_stats_history();
4

3 に答える 3

2

WHEN 条件はサブクエリをサポートしていないため、これは機能しません (こちらのドキュメントを参照)。

履歴更新関数をどのように作成するかによって、特に見栄えがしたり、エレガントでなくなったりすることはありません。非常に大量の書き込みが懸念される場合は、履歴更新プロセスを最適化するための手法を検討してください。

于 2013-04-15T02:18:29.177 に答える
0

when という単語を where という単語に置き換えます。

于 2013-04-15T01:28:27.257 に答える