1
いけない前にスイッチ:Postgresqlのトリガ:後からトリガが、私はこの単純なplpgsqlが機能してい火災
CREATE FUNCTION "update_times"() RETURNS trigger AS '
BEGIN
NEW.update_time = NOW();
RETURN NEW;
END;'
LANGUAGE "plpgsql";
--The trigger:
CREATE TRIGGER test_update_time BEFORE UPDATE ON contact FOR EACH ROW EXECUTE PROCEDURE update_times();
をして、これはうまく動作しますが、だけで、BEFOREトリガー...
私は火にprefern (いけない仕事
CREATE FUNCTION "update_times_after"() RETURNS trigger AS '
BEGIN
OLD.update_time = NOW();
RETURN OLD;
END;'
LANGUAGE "plpgsql";
--The trigger:
CREATE TRIGGER test_update_time_after AFTER UPDATE ON contact FOR EACH ROW EXECUTE PROCEDURE update_times_after();
しかし AFTERトリガー:トリガーは、更新後、私は機能ととして、トリガ自体を変更しましたトリガーは機能しません)。
私は間違っていますか?
はい、しかし、更新SQLが実行され、データが保存されているときに、 'update_time'フィールドを更新したいと思います... – Strae
わかっているかわかりません。この場合、前と後の違いは何ですか? とにかく - テーブルに保存されている行を変更する場合は、BEFOREトリガーで実行する必要があります。 –
Ops ..私の悪い、私はドキュメントを誤解している..私は、行を更新する前に、BEFOREトリガが発生したと思ったので、クエリが失敗した場合、トリガーはとにかく発生します。私の悪い。 – Strae