Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Primary Key Verletzung bei leerer Tabelle

Empfohlene Antworten

Veröffentlicht

Hallo,

folgendes Problem: Ich arbeite mit dem MS SQL Server 2008 - jetzt versuche ich per Prozedur eine Tabelle zu füllen, deren Primärschlüssel aus 5 Spalten besteht (alle ohne Autowert).

Das insert-Statement sieht vom Schema her so aus:

insert into Tabelle

select Spalte A, Spalte B, Spalte C from Tabelle2

Ich bekomme die Fehlermeldung: "Verletzung der PRIMARY KEY-Einschränkung 'PK_Name'. Ein doppelter Schlüssel kann in das 'Tabellenname'-Objekt nicht eingefügt werden." Der Clou ist, dass kein doppelter Schlüssel existiert, der da eingetragen werden soll. Ich habe sogar die Tabelle geleert, das insert-Statement mit Top(1) erweitert und die Geschichte versucht auszuführen, aber bekomme immernoch dieselbe Fehlermeldung. Kurzum ich versuche einen einzelnen Datensatz in eine leere Tabelle einzutragen und bekomme die Meldung, dass ich einen doppelten Schlüssel nicht einfügen darf.

Hat sich der MS SQL Server da etwas zickig mit PKs über mehrere Spalten oder woran kann das liegen? Bin für jede Hilfe dankbar.

Gibt es noch offenen Transaktionen die in die Tabelle schreiben aber noch nicht comittet haben?

Was passiert, wenn Du den Datensatz den Du per SELECT ermittelst, händisch per INSERT INTO ... VALUES ... einfügst?

Dim

Hallo,

...... deren Primärschlüssel aus 5 Spalten besteht (alle ohne Autowert).

Das insert-Statement sieht vom Schema her so aus:

insert into Tabelle

select Spalte A, Spalte B, Spalte C from Tabelle2

Wenn dein PK aus 5 Attributen besteht, du aber nur 3 in deinem Insert einfügst, hast du eh schon ein Problem.

Gruss

Offene Transaktionen gibt es nicht, das händische Reinschreiben per insert into values funktioniert dubioser Weise.

@dbwizard: Das war nur ein Beispiel, um zu verdeutlichen, dass ich kein "insert into ... values ..." benutze, sondern das insert mit einer Abfrage ausführe. Selbstverständlich fülle ich alle Felder.

Ich habe auch mal aus der Tabelle den PK gänzlich entfernt, ich bekomme immernoch die gleiche Fehlermeldung bei Ausführung der SP.

Ich versuche also einen einzigen Datensatz in einer leeren Tabelle ohne Primärschlüssel zu speichern und die Prozedur bricht ab mit der Fehlermeldung "Verletzung der PRIMARY KEY-Einschränkung 'PK_Name'. Ein doppelter Schlüssel kann in das 'Tabellenname'-Objekt nicht eingefügt werden". Das ist doch mal was.

Hat jemand einen Gedanken, was da vor sich geht oder wie ich das Problem beheben kann?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.