티스토리 뷰

Computer/Databases

MSSQL의 DROP FUNCTION/PROCEDURE/TRIGGER

인생이글케쉬우냐 2009. 5. 28. 19:58
디비 마이그레이션을 하다보니,
아무래도 예전 Funtion이나 프로시져, 트리거등을 현재 상황으로 변경해야하는데
웹 업글 작업에 주어진 시간은 단 3일이기 때문에
업데잇 문을 만드는데 드는 시간을 투자할 마음의 여유가 없었다.

그래서 선택한 것은 모든 펑션/프로시져/트리거를 완전 삭제해버리고 새로 생성해버리는..(엽기적인;;)
것이다.

그동안 남이 만들어둔 구문을 F5눌러 실행만 해봤지 직접 만들어본적은 없어서 검색 신공을 펼치기 시작했다.
대부분의 블로그에 언급된 방법은, DROP FUNCTION 스키마명.펑션이름..  뭐 이런식이었는데
스키마명이 멀 의미하는지도 잘 모르겠어서 아무리 해도 구문오류가 났다.
(데이터베이스명인가 싶어서 넣어봤지만 아니었다..OTL)

그러다 찾은것이 단지 오브젝트 명만 알면 바로 드랍할수 있는 깔꼼한 방식!!
바로 다음과 같다.

IF OBJECT_ID('fn_diagramobjects') IS NOT NULL DROP FUNCTION  fn_diagramobjects;
IF OBJECT_ID('REPORT_ACTIVITY') IS NOT NULL DROP PROCEDURE  REPORT_ACTIVITY;
IF OBJECT_ID('tI_TB_HISTORY') IS NOT NULL DROP TRIGGER tI_TB_HISTORY;

이런식으로 하면 쉽게 드랍할 수 있다.
IF OBJECT_ID('기능명') IS NOT NULL DROP [FUNCTION/PROCEDURE/TRIGGER] 기능명;

앞에서 존재여부를 체크하므로, 해당 오브젝트가 존재하지 않더라도 오류가 없이 잘 실행된다.



주의사항 : 오류가 안뜨므로, 해당 오브젝트가 제대로 드랍되지 않아도 모른다는거... ㅎㄷㄷ
--> 직접 다시 확인해봐야한다능 ㄷㄷㄷ

참고 1 : http://winslab.cnu.ac.kr/Oracle%20API/server.101/b10759/statements_8014.htm
참고 2 : http://cafe.naver.com/goodhint.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1073
반응형

'Computer > Databases' 카테고리의 다른 글

[MSSQL 2005] SET ANSI_NULLS  (0) 2009.09.14
[MSSQL] 여러컬럼의 값을 하나의 컬럼으로 합치는 방법  (0) 2009.06.03
MSSQL 2000과 2005사이  (0) 2009.05.28
ms sql 백업  (0) 2009.05.22
SQL 모음  (0) 2009.05.14