错误:对表“ S2”的插入或更新违反了外键约束“ S2_customer_id_fkey”

时间:2020-08-01 05:03:05

标签: database postgresql foreign-keys

仅仅组成一些表,只是为了找到这个错误,我花了很多时间在代码上,但是找不到错误。 你们能帮我这个忙吗? 这是我在编辑器中输入的查询

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 :(得分:0)

您应单独运行每个查询或使用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)
);