AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Views über 2 Tabellen mit Beziehung
Thema durchsuchen
Ansicht
Themen-Optionen

Views über 2 Tabellen mit Beziehung

Ein Thema von PeteSky · begonnen am 1. Feb 2007 · letzter Beitrag vom 1. Feb 2007
Antwort Antwort
PeteSky

Registriert seit: 9. Nov 2004
10 Beiträge
 
#1

Views über 2 Tabellen mit Beziehung

  Alt 1. Feb 2007, 14:36
Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO
Hallo,
Habe ein Problem mit einer View beim Löschen von Daten.
Hier die View:
SQL-Code:
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
Ausserdem besteht eine Beziehung zwischen Stoerung.eBetrieb und Kunde.Betrieb.
SQL-Code:
ALTER TABLE [dbo].[Stoerung]
ADD CONSTRAINT [FK_Stoerung_Kunde] FOREIGN KEY ([eBetrieb])
  REFERENCES [dbo].[Kunde] ([Betrieb])
  ON UPDATE NO ACTION
  ON DELETE NO ACTION
Beim Löschen von Daten bekomme ich folgende Fehlermeldung:
Code:
 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.
Was mache ich hier falsch?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Views über 2 Tabellen mit Beziehung

  Alt 1. Feb 2007, 14:50
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
  Mit Zitat antworten Zitat
PeteSky

Registriert seit: 9. Nov 2004
10 Beiträge
 
#3

Re: Views über 2 Tabellen mit Beziehung

  Alt 1. Feb 2007, 15:33
Danke für die schnelle Antwort.
Habe jetzt geändert:
SQL-Code:
ALTER TABLE [dbo].[Stoerung]
ADD CONSTRAINT [FK_Stoerung_Kunde] FOREIGN KEY ([eBetrieb])
  REFERENCES [dbo].[Kunde] ([Betrieb])
  ON UPDATE NO ACTION
  ON DELETE CASCADE
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
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz