Sono nuovo in postgreSQL. Ho 3 tabelle, una tabella fa riferimento alle chiavi primarie dell'altra 2 tabella. Ma non sono riuscito a inserire dati nel file Table3
. Vedi il codice qui sotto:
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
);
ERRORE: inserire o aggiornare nella tabella "Tabella 3" viola il vincolo di chiave esterna "Tabella 3_DataID_fkey" DETTAGLIO: Chiave (DataID) = (27856) non è presente nella tabella "Tabella1".
Quando ho provato a inserire i dati nelle 3 tabelle, si è verificato un errore. Ho fatto riferimento alla documentazione di postgreSQL e ho modificato il mio codice come segue: (Purtroppo ha mostrato un altro errore)
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")
);
ERRORE: non sono consentite più chiavi primarie per la tabella "Tabella3" LINEA 65: PRIMARY KEY ("DataID", "Indirizzo")
Aiutatemi ... Come posso creare il riferimento?
Ho cambiato l' ID
as UNIQUE
e rimosso la linea PRIMARY KEY ("ID")
. A quel tempo mostra un altro errore come:
ERRORE: il valore della chiave duplicata viola il vincolo univoco "Table3_pkey"