Ich bin neu in postgreSQL. Ich habe 3 Tabellen, eine Tabelle verweist auf die Primärschlüssel der anderen 2 Tabelle. Aber ich konnte keine Daten in die einfügen Table3
. Siehe den folgenden Code:
DROP TABLE Table1 CASCADE;
CREATE TABLE Table1(
"DataID" bigint NOT NULL DEFAULT '0',
"AdData" integer DEFAULT NULL,
PRIMARY KEY ("DataID")
);
DROP TABLE IF EXISTS Table2 CASCADE;
CREATE TABLE Table2 (
"Address" numeric(20) NOT NULL DEFAULT '0',
"Value" numeric(20) DEFAULT NULL,
PRIMARY KEY ("Address")
);
DROP TABLE IF EXISTS Table3 CASCADE;
CREATE TABLE table3 (
"ID" bigint NOT NULL DEFAULT '0',
"DataID" bigint DEFAULT NULL,
"Address" numeric(20) DEFAULT NULL,
"Data" bigint DEFAULT NULL,
PRIMARY KEY ("ID"),
FOREIGN KEY ("DataID") REFERENCES Table1("DataID") on delete cascade on update cascade,
FOREIGN KEY ("Address") REFERENCES Table2("Address") on delete cascade on update cascade
);
FEHLER: Einfügen oder Aktualisieren in Tabelle "Tabelle3" verstößt gegen die Fremdschlüsseleinschränkung "Table3_DataID_fkey". DETAIL: Schlüssel (DataID) = (27856) ist in Tabelle "Tabelle1" nicht vorhanden.
Beim Versuch, Daten in die 3 Tabellen einzufügen, ist ein Fehler aufgetreten. Ich habe auf die postgreSQL-Dokumentation verwiesen und meinen Code wie folgt geändert: (Leider wurde ein weiterer Fehler angezeigt. )
DROP TABLE Table1 CASCADE;
CREATE TABLE Table1(
"DataID" bigint NOT NULL DEFAULT '0',
"AdData" integer DEFAULT NULL,
PRIMARY KEY ("DataID")
);
DROP TABLE IF EXISTS Table2 CASCADE;
CREATE TABLE Table2 (
"Address" numeric(20) NOT NULL DEFAULT '0',
"Value" numeric(20) DEFAULT NULL,
PRIMARY KEY ("Address")
);
DROP TABLE IF EXISTS Table3 CASCADE;
CREATE TABLE table3 (
"ID" bigint NOT NULL DEFAULT '0',
"DataID" bigint DEFAULT NULL REFERENCES Table1 ON DELETE RESTRICT,
"Address" numeric(20) DEFAULT NULL REFERENCES Table2 ON DELETE CASCADE,
"Data" bigint DEFAULT NULL,
PRIMARY KEY ("ID"),
PRIMARY KEY("DataID", "Address")
);
FEHLER: Mehrere Primärschlüssel für Tabelle "Tabelle3" sind nicht zulässig. LINE 65: PRIMARY KEY ("DataID", "Address")
Bitte helfen Sie mir ... Wie kann ich die Referenz erstellen?
Ich habe das ID
as geändert UNIQUE
und die Zeile entfernt PRIMARY KEY ("ID")
. Zu diesem Zeitpunkt zeigt es einen weiteren Fehler wie:
FEHLER: Doppelter Schlüsselwert verletzt eindeutige Einschränkung "Table3_pkey"