0
トリガーについて質問したいと思います。私がテーブルTを持っていて、更新前にトリガーが必要だとしましょう。しかし、私には問題があります。トリガーからTの他の行を使って条件をチェックする必要があります。私の質問は、どのRDBMSがこれをサポートしていますか?トリガーが発生する同じテーブルで選択を実行するトリガーをどこで記述できますか?例えば:同じテーブルのトリガー選択
CREATE TRIGGER updtrigger BEFORE UPDATE ON Employee
-> FOR EACH ROW
-> BEGIN
-> IF NEW.Salary<=500 THEN
-> SET NEW.Salary=10000;
-> ELSEIF NEW.Salary>500 and NEW.Salary < 600 THEN
-> SET NEW.Salary=15000;
-> ELSEIF NEW.Salary > (select MAX(Salary) from Employee)
-> Set NEW.Salary = 601;
-> END IF;
-> END
-> //
は、
敬具、
ラヨシュアルパド、ありがとうございました。
これは危険なようで、最高の状態で。私はrdbmsがこれを可能にするかどうか分からない。 'FOR EACH ROW'更新の途中で同じテーブルに対するクエリを許可すると、トリガー内のデータの不一致の可能性が開放されます。行が更新される順序は保証されません。 – rejj
私はこの問題を理解していますが、これは必要になるかもしれません。例えば、いくつかのタイプの矛盾を自動的に取り除きたい場合は、これらのトリガーが必要です。あなたのトリガは、あなたの行が選択なしで他のものと矛盾しているかどうかをどのようにして調べますか?あなたが何をしているのかを知っているなら、これは最高の危険なことではありませんが、何をしているのか分からない人にとっては危険です。 –