Tôi là một người mới trong postgreSQL. Tôi có 3 bảng, một bảng tham chiếu các khóa chính của 2 bảng khác. Nhưng tôi không thể chèn dữ liệu vào Table3
. Xem mã dưới đây:
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
);
LRI: chèn hoặc cập nhật trên bảng "Bảng 3" vi phạm ràng buộc khóa ngoại "Bảng3_DataID_fkey" CHI TIẾT: Khóa (DataID) = (27856) không có trong bảng "Bảng 1".
Khi tôi cố gắng chèn dữ liệu vào 3 bảng thì đã xảy ra lỗi. Tôi đã giới thiệu tài liệu postgreSQL và thay đổi mã của mình như sau: (Thật không may, nó đã hiển thị một lỗi khác)
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")
);
LRI: nhiều khóa chính cho bảng "Bảng 3" không được phép LINE 65: KEY PRIMARY ("DataID", "Địa chỉ")
Xin hãy giúp tôi ... Làm thế nào tôi có thể tạo tài liệu tham khảo?
Tôi đã thay đổi ID
như UNIQUE
và loại bỏ các dòng PRIMARY KEY ("ID")
. Tại thời điểm đó, nó hiển thị một lỗi khác như:
LRI: giá trị khóa trùng lặp vi phạm ràng buộc duy nhất "Table3_pkey"