ОШИБКА: вставка или обновление в таблице «S2» нарушает ограничение внешнего ключа «S2_customer_id_fkey» - PullRequest
0 голосов
/ 01 августа 2020

Просто составив несколько таблиц, только чтобы найти эту ошибку, я потратил много времени, глядя на код, но не смог найти ошибку. Ребята, пожалуйста, помогите мне с этим. Вот запрос, который я набираю в редакторе

CREATE TABLE "P1"
(PRODUCT_ID INT,
PRODUCT_NAME CHAR(100),
PRODUCT_DISCOUNT INT,
PRODUCT_BRAND CHAR(100),
PRODUCT_SIZE INT,
PRODUCT_COLOR CHAR(100),
PRODUCT_SELLING_PRICE INT,
PRODUCT_PIRCHASE_PRICE INT,
PRIMARY KEY (PRODUCT_ID)
);

CREATE TABLE "C4"
(
Customer_Id int,
Customer_Name char(100),
Customer_Address varchar(255),
Customer_Phone varchar(255),
Customer_Email varchar(255),
Product_Id INT,
primary key(Customer_Id),

foreign key(Product_Id)
references P1(PRODUCT_ID)
);

CREATE TABLE "S2"
(
Department_Id int,
Department_Name char(100),
Product_Id int,
Customer_Id int,
primary key(Department_Id),
foreign key(Product_Id)
references P1(PRODUCT_ID),
foreign key(Customer_Id)
references C4(Customer_Id)
);

CREATE TABLE "E1"
(
E_Id int,
E_Name char(100),
E_Address varchar(255),
E_Email varchar(255),
Customer_Id int,
primary key(E_Id),
foreign key(Customer_Id)
references C4(Customer_Id)
);

При запуске вышеуказанного запроса я получаю эту ошибку

ERROR:  insert or update on table "S2" violates foreign key constraint "S2_customer_id_fkey"
DETAIL:  Key (customer_id)=(1015) is not present in table "c4".
********** Error **********

ERROR: insert or update on table "S2" violates foreign key constraint "S2_customer_id_fkey"
SQL state: 23503
Detail: Key (customer_id)=(1015) is not present in table "c4".

1 Ответ

0 голосов
/ 01 августа 2020

следует запускать каждый запрос отдельно или использовать go, например:

CREATE TABLE "P1"
(PRODUCT_ID INT,
PRODUCT_NAME CHAR(100),
PRODUCT_DISCOUNT INT,
PRODUCT_BRAND CHAR(100),
PRODUCT_SIZE INT,
PRODUCT_COLOR CHAR(100),
PRODUCT_SELLING_PRICE INT,
PRODUCT_PIRCHASE_PRICE INT,
PRIMARY KEY (PRODUCT_ID)
);
go
CREATE TABLE "C4"
(
Customer_Id int,
Customer_Name char(100),
Customer_Address varchar(255),
Customer_Phone varchar(255),
Customer_Email varchar(255),
Product_Id INT,
primary key(Customer_Id),

foreign key(Product_Id)
references P1(PRODUCT_ID)
);
go
CREATE TABLE "S2"
(
Department_Id int,
Department_Name char(100),
Product_Id int,
Customer_Id int,
primary key(Department_Id),
foreign key(Product_Id)
references P1(PRODUCT_ID),
foreign key(Customer_Id)
references C4(Customer_Id)
);
go
CREATE TABLE "E1"
(
E_Id int,
E_Name char(100),
E_Address varchar(255),
E_Email varchar(255),
Customer_Id int,
primary key(E_Id),
foreign key(Customer_Id)
references C4(Customer_Id)
);
...