In unserer SQL Server 2005-DB haben wir festgestellt, dass einige Fremdschlüssel nicht die Eigenschaft "On Delete Cascade" haben, was uns einige Verweisfehler gibt, wenn wir versuchen, einige Datensätze zu löschen.Aktualisieren einer Fremdschlüsseleinschränkung mit ON DELETE CASCADE wird nicht aktualisiert?
Verwenden Sie das Management Studio Ich scripted die DROP
und CREATE
SQL, aber es scheint, dass die CREATE
nicht richtig funktioniert.
Die 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]
und die 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]
Wenn ich manuell den Wert des in der GUI Löschen auf ändern, nach dem Löschen und erneutes Erstellen, die auf Löschen nicht korrekt ist aktualisiert.
Als Test, setze ich die Regel löschen in der GUI auf Set Null
. Es wurde korrekt gelöscht und ohne Fehler neu erstellt. Wenn ich wieder in die GUI komme, zeigt es immer noch die Set Null
als die Löschregel.
Habe ich etwas falsch gemacht? Oder gibt es eine andere Möglichkeit, eine Einschränkung zu bearbeiten, um die ON DELETE CASCADE
Regel hinzuzufügen?
hmm, Prost. Ich werde es mir ansehen. –
Ja, das war das Problem. Aus irgendeinem Grund zeigte das Management Studio immer noch den alten Wert. Ich musste die App schließen und neu starten, bevor die Änderung angezeigt wurde. Vielen Dank! –