Hallo liebe Forengemeinde,
ich habe ein Problem beim Einfügen von Datensätzen in eine Tabelle mit einem zusammengesetzten Primärschlüssel.
Dabei wird mir der Fehler „doppelter Schlüsselwert verletzt Unique-Constraint <…>“ angezeigt, obwohl einer der beiden Schlüssel-Attribute definitiv einen neuen Wert aufweist.
Am besten erkläre ich das nochmal an einem konkreten vereinfachten Beispiel:
Es existiert eine Tabelle mit der Information, wann ein Semester an einer Hochschule beginnt und endet. Sie weist u.a. folgende 4 Spalten auf:
Institution Semester Beginn Ende
Der Primärschlüssel besteht also aus den Spalten Hochschule und Semester.
Ferner ist (natürlich) eingestellt, dass diese beiden Spalten nicht null sein dürfen und der Pimärschlüssel aus eben diesen beiden Spalten besteht. Weitere Merkmale weist die Tabelle aktuell nicht auf.
Nun müssen die Werte für das aktuelle Semester (Wintersemester 2011) zu allen bisher vorhandenen Einrichtungen eingefügt werden. Allerdings gilt zunächst die Annahme, dass alle Institutionen die gleichen Start- und Endtermine aufweisen (Zunächst benötige ich die Tabelle für Test-Zwecke).
Bsp:
TU Chemnitz WS11 01.10.2011 31.03.2012
…
Dies wollte ich mit folgendem Statement ausführen:
INSERT INTO dim_semester_institution (institution, semester, begin_semester, end_semester)
SELECT DISTINCT institution, ‘WS 11’, ‘2011-10-01’::date, ‘2012-03-31’::date FROM dim_semester_institution
Da bisher keine Werte zum WS 11 vorliegen, verstehe ich nicht warum ich den o.g. Fehler wegen „doppelter Werte im Primärschlüssel“ erhalte.
Merkwürdig ist außerdem, dass sich ein einzelner Beispiel-Datensatz über ein <Insert Into … VALUES…> einfügen lässt.
Ferner hatte ich bereits eine zweite Tabelle verwendet, um an die Auswahl der Einrichtungen zu gelangen. Auch hier hatte ich den gleichen Fehler erhalten.
Ich wäre für ein paar Vorschläge oder Hinweise sehr dankbar. Vielleicht habe ich auch einfach nur etwas in der Tabellendefinition vergessen?
Freundliche Grüße
Antje