2012-01-21 3 views
0

흥미로운 질문이 있습니다 : 트리거 이름이있는 테이블이 Foo이고 Foo.TriggerName 필드에 트리거 이름이 저장되어 있습니다. Foo에서 행을 삭제하면 방아쇠를 내고 Foo.TriggerName이라는 이름으로 방아쇠를 떨어 뜨리고 싶습니다.varchar를 테이블 이름으로 변환하는 방법은 무엇입니까?

예 :

내가 ID = 3로 행을 삭제하고
Foo 
ID, TriggerName 
1, 'Lorem' 
2, 'Ipsum' 
3, 'Bar' 

, 내가 자동으로 이름 '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

을 할 수있는 당신은 푸 에와 트리거 삭제를위한 트리거를 정의 할 수 있습니다 동적 SQL

을 사용하려고 할 수 있습니다 결국, : old.triggername;만으로 충분하다. – Ben

관련 문제