2011-09-01 4 views
4

일부 SQL Azure 데이터베이스 항목을 삭제해야하며 cascade on delete이 지정되었는지 확실하지 않습니다. 우연히 내가 중요한 것을 지우는다면, 나는 상처의 세계에 빠져있다. 그래서 계단식 삭제를 확인하는 명령이 있습니까?테이블이 삭제시 계단식으로 표시되는지 보여주는 SQL 명령

+0

당신은 당신이 당신이 뭔가를 삭제하려는 테이블에 FK와 테이블이 건가요? 캐스케이드 삭제가있는 경우, 어떤 일이 발생했는지 알 수 있습니다. 하지 않으면 삭제가 실패합니다. 그게 옳은 것이 아닌가? – n8wrl

+0

나는 FK가있는 테이블을 가지고 있을지도 모른다. .. 나는 모른다. 위험을 감수하고 힘든 길을 찾으면 상처의 세계를 볼 수 있습니다. =)이 경우 먼저 FK 제약 조건을 이동해야합니다. – Gleno

+0

@Gleno, Fks를 그냥 다시 지우지 마십시오. 삭제할 수 있습니다. 거기에는 이유가 있기 때문에 제거하고 자녀를 삭제하지 않고 부모를 삭제하면 데이터 무결성 문제를 해결할 수 있습니다. 상위 레코드로 삭제 된 하위 레코드를 원하지 않으면 상위 레코드를 삭제할 수 없습니다. 대신 비활성으로 표시하십시오. – HLGEM

답변

3

sp_fkeys을 사용하십시오. http://msdn.microsoft.com/en-us/library/ms175090.aspx 결과 집합의 "DELETE_RULE"열을보십시오.

0=CASCADE 
1=NO ACTION 

예 :

USE MyDB; 
GO 
EXEC sp_fkeys @pktable_name = N'MyTable',@pktable_owner = N'MyUserName'; 
+1

* N'MyUserName '비트가 없어도 작동합니다. 감사! 결과가 어두워지며 삭제가 계속 켜져 있습니다. 또한 Azure에 ** USE **가 없습니다. – Gleno

+0

@Gleno DB에 대한 사용 권한이 무엇인지 모르겠지만 계단식 삭제를 제거 할 수 있습니다 (DB 스키마를 실제로 알고 있어야하며 ' t 그것을 위로 던지십시오) –

+0

아, 나는 그것이 그것을 망칠 것이라는 점을 믿습니다. 수동으로 청소하겠습니다. 스 니펫을 사용하여 2 가지 종속성 만 있다는 것을 알게 된 후 조심스럽게 진행할 수 있습니다. :) – Gleno