SQL Konflikt mit der REFERENCE-Einschränkung

ML180

Lt. Junior Grade
Dabei seit
Jan. 2006
Beiträge
287
Moin moin,
folgenden Befehlt habe ich bisher ohne Probleme ausgeführt.
delete from s4t.s4t_user.tblartikel where TITLE is null

jetzt bekomme ich folgenden Fehler angezeigt.

Meldung 547, Ebene 16, Status 0, Zeile 1
Die DELETE-Anweisung steht in Konflikt mit der REFERENCE-Einschränkung 'FK_ARTIKEL_KBA_MAP'. Der Konflikt trat in der 'S4T'-Datenbank, Tabelle 's4t_user.ARTIKEL_KBA_MAP', column 'ARTIKEL_ID' auf.

Ich glaube, der Fehler tritt auf, seitdem ich eine Datenbanksicherung gemacht habe.
Wie kann ich diesen Fehler beheben.
Wenn möglich genau beschreiben, ich übe noch mit SQL.

Vielen dank schon mal
Gruß
Markus
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Offenbar verletzt dein DELETE-Befehl eine referentielle Integritätsbedingung, nämlich 'FK_ARTIKEL_KBA_MAP'. Diese Bedingungen besagen üblicherweise, daß (z.B.) ein Datensatz nicht gelöscht werden darf, wenn andere Datensätze noch auf ihn verweisen.

Mach mal
Code:
exec sp_help s4t_user.ARTIKEL_KBA_MAP
Da sollte er dir (unter anderem) die Integritätsbedingungen abzeigen, die mit dieser Tabelle zusammenhängen, und die Fremdschlüsselbeziehungen. Im Zweifelsfall poste das Ergebnis hier rein (bitte in Code-Tags :))
 

tRITON

Lieutenant
Dabei seit
Mai 2010
Beiträge
715
Ich kann mich täsuchen, aber für mich klingt das als wenn du eine Integritäts-Regel erställt hättest (oder Struktur Update der Datenbank) die verhindert, dass du Artikel aus "s4t.s4t_user.tblartikel" löschen darfst, da sonst in der Tabelle "s4t_user.ARTIKEL_KBA_MAP" noch Artikel vorhanden wären, die keinem Artikel mehr zugeordnet werden können (Referenz)

Schau halt mal in der Tabelle nach mit

Select * from s4t.s4t_user.tblartikel where TITLE is null

, um welche Artikel es sich handelt und prüfe dann mal die IDs dieser Artikel mit den Artikeln in der Tabelle "ARTIKEL_KBA_MAP"

Evtl geht folgendes bei dir: Select * from ARTIKEL_KBA_MAP where ID in (Select ID from s4t.s4t_user.tblartikel where TITLE is null)

Evtl hilft dir das
 

ML180

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2006
Beiträge
287
Also Anfassen und selektieren kann ich alles.
in der Tabelle "ARTIKEL_KBA_MAP" hat die ID keine Übereinstimmung mit irgendeinem Wert in der "tblartikel".
Ich habe auch kein Update eingespielt oder sonstiges. Ich habe lediglich neue Artikel eingefügt in die "tblartikel". auch danach funktionierte der Delete befehl problemlos. Seit der Datenbanksicherung scheint das problem da zu sein.
funktioniert garnicht.

edit:
angenommen ich habe über
Select * from ARTIKEL_KBA_MAP where ID in (Select ID from s4t.s4t_user.tblartikel where TITLE is null)
die Daten markiert, kann ich diese nicht löschen oder?

besten Dank schonmal
 
Zuletzt bearbeitet: (hinzufügen)

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Du benutzt aber MS SQL Server, oder? Welche Version?
 

ML180

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2006
Beiträge
287
Stimmt, ich habe es vergessen zu sagen, Sql Server 2008, und dort über das Managment Studio
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Vielleicht fehlte in meinem Befehl von oben noch ein Qualifikator, versuch also mal

Code:
exec sp_help s4t.s4t_user.ARTIKEL_KBA_MAP
Wenn was dabei rauskommt, dann such in der Ausgabe mal nach 'FK_ARTIKEL_KBA_MAP'. Wenn nicht, poste die Fehlermeldung :)
 

tRITON

Lieutenant
Dabei seit
Mai 2010
Beiträge
715
Wenn du über meine Abfrage Ergebnisse erhälst, bedeutet das das du Artikel hast, die du nicht löschen darfst, weil dein Datenbank Schema vorgibt, dass es nur Artikel geben darf, die in der s4t.s4t_user.tblartikel vorhanden sind.

Dann kannst du das Problem weiter Isolieren und dir anschauen, warum du dort Probleme bekommst.
 

ML180

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2006
Beiträge
287

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Hm, da kann ich leider nix zu sagen :(
 
Top