2012-01-21 8 views
0

私は面白い質問があります: 私はFooと呼ばれるトリガー名のテーブルを持っていて、Foo.TriggerNameフィールドはトリガー名を格納します。もし私がFooから行を削除すると、私はFoo.TriggerNameという名前のトリガーをドロップするトリガーが欲しいです。varcharをテーブル名に変換するにはどうすればよいですか?

例:

Foo 
ID, TriggerName 
1, 'Lorem' 
2, 'Ipsum' 
3, 'Bar' 

私はID = 3で行を削除しています、私は自動的に名前'Bar'でトリガーを削除したいと思います。どうすればこれを達成できますか?

答えて

3

あなたは余分なセミコロンを必要としないあなたは、動的SQLコール

CREATE OR REPLACE TRIGGER foo_before_delete 
BEFORE DELETE 
    ON Foo 
    FOR EACH ROW 
BEGIN 

EXECUTE IMMEDIATE 'DROP TRIGGER '||:old.TriggerName||';'; 

END; 
+2

を行うことができますあなたはFooの に、トリガで、削除のためのトリガーを定義することができ、動的SQL

に使用しようとすることができます最後に、 ':old.triggername;'で十分です。 – Ben

関連する問題