Я новый в PostgreSQL. У меня есть 3 таблицы, одна таблица ссылается на первичные ключи другой 2 таблицы. Но я не мог вставить данные в Table3
. Смотрите код ниже:
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
);
ОШИБКА: вставка или обновление таблицы «Table3» нарушает ограничение внешнего ключа «Table3_DataID_fkey» DETAIL: Ключ (DataID) = (27856) отсутствует в таблице «Table1».
Когда я попытался вставить данные в 3 таблицы, произошла ошибка. Я сослался на документацию по postgreSQL и изменил свой код следующим образом: (К сожалению, он показал другую ошибку)
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")
);
ОШИБКА: несколько первичных ключей для таблицы «Table3» не допускаются. ЛИНИЯ 65: PRIMARY KEY («DataID», «Address»)
Пожалуйста, помогите мне ... Как я могу создать ссылку?
Я изменил ID
как UNIQUE
и удалил строку PRIMARY KEY ("ID")
. В это время он показывает еще одну ошибку, как:
ОШИБКА: двойное значение ключа нарушает уникальное ограничение "Table3_pkey"