![]() |
Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO
Views über 2 Tabellen mit Beziehung
Hallo,
Habe ein Problem mit einer View beim Löschen von Daten. Hier die View:
SQL-Code:
Ausserdem besteht eine Beziehung zwischen Stoerung.eBetrieb und Kunde.Betrieb.
CREATE VIEW dbo.tblStoerung
AS SELECT dbo.Kunde.Geldgeber, dbo.Stoerung.* FROM dbo.Kunde INNER JOIN dbo.Stoerung ON dbo.Kunde.Betrieb = dbo.Stoerung.eBetrieb
SQL-Code:
Beim Löschen von Daten bekomme ich folgende Fehlermeldung:
ALTER TABLE [dbo].[Stoerung]
ADD CONSTRAINT [FK_Stoerung_Kunde] FOREIGN KEY ([eBetrieb]) REFERENCES [dbo].[Kunde] ([Betrieb]) ON UPDATE NO ACTION ON DELETE NO ACTION
Code:
Was mache ich hier falsch? :?
Die DELETE-Anweisung verstieß gegen die COLUMN REFERENCE-Einschränkung 'FK_Stoerung_Kunde'. Der Konflikt trat in der dataSQL-Datenbank, Tabelle 'Stoerung', column 'eBetrieb' auf.
|
Re: Views über 2 Tabellen mit Beziehung
Hallo,
du hast eine 1:n Beziehung zwischen Kunden und Störungen definiert, einen Fremdschlüssel eingerichtet und für die Deklarative Referentielle Integrität (DRI: ON DELETE NOACTION) angegeben, dass beim Löschen des referenzierten Master-Keys nichts unternommen werden soll. Wenn in deinem Datenmodell Störungen nur in Verbindung mit einem Kunden existieren dürfen, dann willst du ON DELETE CASCADE festlegen. Andernfalls brauchst du keine Fremdschlüsselbeziehung und musst, da MS SQL nicht alle DRI Business Rules (CASCADE, NOACTION, NULLIFY, REJECT, ...) unterstützt, einen entsprechenden Trigger definieren. Grüße vom marabu |
Re: Views über 2 Tabellen mit Beziehung
Danke für die schnelle Antwort. :thumb:
Habe jetzt geändert:
SQL-Code:
Nur werden mir jetzt auch die Einträge in der Tabelle Kunde gelöscht und alle Einträge sie sich auf diesen Kunden beziehen eben auch in der Tabelle Stoerung :?
ALTER TABLE [dbo].[Stoerung]
ADD CONSTRAINT [FK_Stoerung_Kunde] FOREIGN KEY ([eBetrieb]) REFERENCES [dbo].[Kunde] ([Betrieb]) ON UPDATE NO ACTION ON DELETE CASCADE Es sollen ja nur der eine Datensatz in der Tabelle Stoerungen gelöscht werden. Lösche ich die ganze Beziehung, dann werden mir trotzdem die Einträge aus der Tabelle Kunden entfernt. Hier noch mal die Datenbank: Jeder Kunde existiert nur einmal in der Tabelle Kunde. In der Tabelle Stoerung werden über ein Lookup-Feld die Kunden im Feld eBetrieb ausgewählt. Es können also nur Kunden ausgewählt werden , die in der Tabelle Kunden existieren. Änderungen bei den Kunden werden an die Tabelle Störung weitergegeben. Wird ein Eintrag in der Tabelle Stoerung entfernt, so sollen die Kunden-Tabelle unberührt bleiben. Ohne Views hatte ich keine Probleme. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz