우리는 SQL Server 2005 DB에서 일부 외래 키에 On Delete Cascade 속성 집합이 없다는 것을 알고 있습니다. 이는 일부 레코드를 삭제하려고 할 때 몇 가지 참조 오류가 발생한다는 것을 의미합니다.ON DELETE CASCADE로 외래 키 제약 조건을 업데이트하지 않습니까?
Management Studio를 사용하여 DROP
및 CREATE
SQL을 스크립팅했지만 CREATE
이 올바르게 작동하지 않는 것으로 보입니다.
DROP
:
USE [FootprintReports]
GO
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK__SUBSCRIPTIONS_Reports]') AND parent_object_id = OBJECT_ID(N'[dbo].[_SUBSCRIPTIONS]'))
ALTER TABLE [dbo].[_SUBSCRIPTIONS] DROP CONSTRAINT [FK__SUBSCRIPTIONS_Reports]
내가 수동에서의 값을 삭제하고 재 작성한 후에 GUI에서 삭제를 변경하는 경우에 삭제 CREATE
USE [FootprintReports]
GO
ALTER TABLE [dbo].[_SUBSCRIPTIONS] WITH CHECK ADD CONSTRAINT [FK__SUBSCRIPTIONS_Reports] FOREIGN KEY([PARAMETER_ReportID])
REFERENCES [dbo].[Reports] ([ID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[_SUBSCRIPTIONS] CHECK CONSTRAINT [FK__SUBSCRIPTIONS_Reports]
가 제대로되지 않습니다 업데이트되었습니다.
테스트에서 GUI의 삭제 규칙을 Set Null
으로 설정했습니다. 올바르게 삭제되고 오류없이 재생성되었습니다. GUI로 돌아 가면, 여전히 Set Null
이 삭제 규칙으로 표시됩니다.
내가 잘못 했나요? 또는 ON DELETE CASCADE
규칙을 추가하기 위해 제약 조건을 편집하는 다른 방법이 있습니까?
음, 건배. 나는 그것을 살펴볼 것이다. –
네, 이것이 문제였습니다. 어떤 이유로 Management Studio는 여전히 오래된 가치를 보여주었습니다. 변경 사항을 표시하기 전에 앱을 닫고 다시 시작해야했습니다. 감사! –