Chúng tôi đã nhận ra trong SQL Server 2005 DB của chúng tôi rằng một số khóa ngoại không có bộ thuộc tính On Delete Cascade, cho chúng ta một số lỗi tham chiếu khi chúng tôi thử và xóa một số bản ghi.Cập nhật ràng buộc khóa ngoại với ON DELETE CASCADE không cập nhật?
Sử dụng Studio quản lý tôi đã viết mã số DROP
và CREATE
SQL, nhưng có vẻ như là CREATE
không hoạt động chính xác.
Các 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]
và 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]
Nếu tôi tự thay đổi giá trị của On Xóa trong GUI, sau khi giảm và tái tạo, On Xóa không phải là chính xác đã cập nhật.
Để kiểm tra, tôi đặt quy tắc Xóa trong GUI thành Set Null
. Nó bị xóa một cách chính xác và được tạo lại mà không có lỗi. Nếu tôi trở lại GUI, nó vẫn hiển thị Set Null
làm Quy tắc xóa.
Tôi đã làm gì sai? hoặc có cách nào khác để chỉnh sửa ràng buộc để thêm quy tắc ON DELETE CASCADE
không?
hmm, chúc mừng. Tôi sẽ xem xét điều đó. –
Vâng, đây là vấn đề. Vì lý do nào đó, Management Studio vẫn hiển thị giá trị cũ. Tôi phải đóng ứng dụng và khởi động lại ứng dụng trước khi nó hiển thị thay đổi. Cảm ơn! –