私は今週問題を抱えていました(ありがたいことに、私ははるかに良い方法で解決しました)。
- データベース内のいくつかのフィールドを一定に保つ必要がありました。
そこで、スクリプトをノックアップしてトリガーをテーブルに配置しました。これにより、挿入または更新が行われたときに値が事前設定された数値に戻されます。
データベースはVMS上で実行されているRDBです(ただし、SQLServerの類似点を知りたいと思います)。
トリガーは次のとおりです。
drop trigger my_ins_trig;
drop trigger my_upd_trig;
!
!++ Create triggers on MY_TABLE
CREATE TRIGGER my_ins_trig AFTER INSERT ON my_table
WHEN somefield = 2
(UPDATE my_table table1
SET table1.field1 = 0.1,
table1.field2 = 1.2
WHERE my_table.dbkey = table1.dbkey)
FOR EACH ROW;
CREATE TRIGGER my_upd_trig AFTER UPDATE ON my_table
WHEN somefield = 2
(UPDATE my_table table1
SET table1.field1 = 0.1,
table1.field2 = 1.2
WHERE my_table.dbkey = table1.dbkey)
FOR EACH ROW;
質問時間
これが無限の再帰を形成することを期待しますが、そうではないようですか?RDBがこれをどのように処理するか、または他のデータベースがどのように処理するかを誰かに説明してもらえますか?
[注:これはひどいアプローチであることは知っていますが、さまざまな問題や複雑さから、コードではこれが単純であるにもかかわらず、最善/最も簡単な方法で実行できなかったことがわかります。ありがたいことに、私はそれをこのように実装していませんが、SOコミュニティにこれについての考えを聞いてみたかったのです。]
前もって感謝します