2011-01-21 6 views
0

일부 DEV DB를 정리하고 싶습니다. 나는 쓰지 않은 "delete from from"을 많이 쓰는 스크립트를 가지고있다. 나는 그들이 DB를 올바른 상태로 남겨 둘지 확신하지 못한다. (그것은 dev DB이므로 그렇게 나쁘지는 않지만 여전히 ...).SQL : DB를 청소하고 위반 사항이 없는지 확인하십시오.

내가 삭제 한 후에 DB가 위반되면 SQL 클리닝 스크립트를 트랜잭션과 롤백으로 래핑 할 수 있습니까?

delete from aaa 
delete from bbb 
... 
delete from zzz 

을 내가 할 싶습니다 :

기본적으로 내가있어

delete from aaa 
delete from bbb 
... 
delete from zzz 
check for violation <-- how do I do this ? 

및 트랜잭션 또는 롤백 할 수있는 일이 포장.

어떻게하면됩니까? (오라클 10이지만 표준 SQL은 좋을 것이다). 일부 문은 커밋에는 자동이 없도록하려면이 옵션을 사용하여 실행할 때 오라클과

+0

"위반"이란 무슨 뜻입니까? 오라클 용어입니까? – Blorgbeard

+0

그런 코드를위한 표준 (SQL/PSM)이 있지만 벤더가 광범위하게 구현하지는 않습니다 (postgre only?) oracle에서는 다음과 같이 추측합니다 :'DECLARE x NUMBER; yourTable에서 SELECT COUNT (*) INTO x from your_colum = '잘못된 값'; IF (x> 0) 그 다음 ROLLBACK END IF; ' – onedaywhen

답변

1

당신이 모든 일이 있는지있을 때

SET AUTOCOMMIT OFF 

는 당신은 COMMIT을 할 수있다 (일반적으로는 기본적으로 OFF입니다) 확인 또는 ROLLBACK 그렇지 않은 경우

+0

@Iweller : OK 좋습니다 ... 그리고 DB를 검사하는 것이 삭제 후에 유효한 상태인지 확인하십시오. * autocommit *이 off로 설정되어있을 때 커밋하기 전에 쉽게 수행 할 수 있습니까? ? – Gugussee

+0

당신이 * DB를 확인하는 것은 당신이 * 삭제 후에 유효한 상태에 있다는 것을 의미합니까? DB별로 Delete 문별로 외래 키 제약 조건을 확인하고, – lweller

관련 문제