Hallo Interbase-Fachleute,
warum liefert Interbase 6.5 bei folgendem
SQL-Staetment
SQL-Code:
CREATE TABLE Mitarbeiter
(
Personalnummer INTEGER NOT NULL,
Name VARCHAR (30) NOT NULL,
Vorname VARCHAR (20) NOT NULL,
Geschlecht CHAR,
Strasse VARCHAR (50) NOT NULL,
Hausnummer CHAR (6),
Plz INTEGER,
Abteilungsbezeichnung VARCHAR (30),
NameEhepartner VARCHAR (30),
VornameEhepartner VARCHAR (20),
GeburtsdatumEhepartner DATE,
GeschlechtEhepartner CHAR,
PersonalnummerVorgesetzter INTEGER,
Gehalt DECIMAL(10,2),
/* Primärschlüssel */
CONSTRAINT pk_Mitarbeiter PRIMARY KEY (Personalnummer),
/* Fremdschlüssel */
CONSTRAINT fk_PlzMitarbeiter FOREIGN KEY (Plz)
REFERENCES Ort (Plz)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT fk_Abteilungsbez FOREIGN KEY (Abteilungsbezeichnung)
REFERENCES Abteilung (Abteilungsbezeichnung)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT fk_PersonalnrVor FOREIGN KEY (PersonalnummerVorgesetzter)
REFERENCES Mitarbeiter (Personalnummer)
ON DELETE SET NULL
ON UPDATE CASCADE,
/*Domain-Integritätsbedingungen */
CONSTRAINT di_Geschlecht CHECK (( GeschlechtEhepartner IN ('M', 'W') OR GeschlechtEhepartner IS NULL) AND Geschlecht IN ('M', 'W') )
)
den Fehler:
Zitat:
STORE RDB$RELATION_CONSTRAINTS failed
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_12"
Das Statement ist nicht von mir "erfunden". Ich habe es aus dem Buch "Datenbankkonzepte in der Praxis" von Sönke Cordts. Es ist ein Teil einer langen Liste von Create-Statements.