2012-01-21 74 views
0

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

例子:

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

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

回答

3

您可以尝试使用动态SQL

您可以定义一个触发删除美孚 和触发你可以做动态SQL调用

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

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

END; 
+2

你不需要额外的分号最后,':old.triggername;'就足够了。 – Ben