如何将varchar转换为表名?

时间:2012-01-21 22:58:16

标签: oracle triggers

我有一个有趣的问题: 我有一个带触发器名称的表,名为FooFoo.TriggerName字段存储触发器名称。如果我从Foo删除一行,我想要一个触发器,它会删除名为Foo.TriggerName的触发器。

示例:

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

当我使用ID = 3删除行时,我想自动删除名为'Bar'的触发器。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以尝试使用动态sql

您可以在Foo上定义删除触发器 并在触发器中,您可以执行动态SQL调用

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

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

END;