2010-04-28 29 views
5

Bazı Dış Keys biz denemek ve bazı kayıtları sildiğinizde bize referans hatalarını birkaç veriyor Cascade özelliği ayarlanmış, Sil yok bizim SQL Server 2005 DB de fark ettim.ON ile yabancı anahtar kısıtlaması cascade güncellememesi SİL Güncellenmesi?

Management Studio'yu kullanarak DROP ve CREATE SQL'lerine komut yazdım ancak CREATE düzgün çalışmıyor gibi görünüyor.

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] 

ve elle On değeri bırakarak ve kendini yeniden sonra, GUI Sil değiştirirseniz, Sil 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] 

doğru değil güncellenmiş.

bir test olarak, Set Null için GUI Sil kural oluşturma. Doğru bir şekilde düştü ve hatasız olarak yeniden oluşturuldu. Ben GUI içine döndüm, hala Sil Kural olarak Set Null gösteriyor.

Yanlış bir şey mi yaptım? veya ON DELETE CASCADE kuralı eklemek için bir kısıtlamanın düzenlenmesinin başka bir yolu var mı?

cevap

7

Kişisel yaklaşım doğru görünüyor. Bir kısıtlamayı düzenlemenin tek yolu ALTER TABLE'dur. Belki de Management Studio'nun bir veri yenilemesine ihtiyacı vardır. Yenile'yi sağ tıklayın veya uygulamayı kapatıp tekrar açın.

+0

hmm, şerefe. Buna bir bakacağım. –

+1

Evet, sorun buydu. Bazı nedenlerle Management Studio hala eski değeri gösteriyordu. Uygulamayı kapatmak ve değişikliği görüntülemeden önce yeniden başlatmam gerekiyordu. Teşekkürler! –

İlgili konular