【发布时间】:2020-09-03 16:30:53
【问题描述】:
我是一个完整的 sql 初学者,我正在使用 mysql xampp 服务器,其中有一个 customers 表和一个 bookings 表。我使用带有 ddl 的 mysql 数据建模器来生成创建这些表的代码。 这就是我在下面创建 2 个表的方式:
预订桌:
CREATE TABLE booking (
booking_id INTEGER NOT NULL,
b_city VARCHAR(30),
b_date DATETIME,
departure_date DATETIME,
arrival_date DATETIME,
dep_time DATETIME,
arr_time DATETIME,
seat_type VARCHAR(30),
flight_cost DOUBLE,
total_cost DOUBLE,
booking_state VARCHAR(2),
deposit DOUBLE,
price_remenant DOUBLE,
customer_customer_id VARCHAR(20) NOT NULL,
flight_id INTEGER,
customer_customer_id1 VARCHAR(20) NOT NULL //I don't know why this is created again
);
CREATE UNIQUE INDEX booking__idx ON
booking (
customer_customer_id
ASC );
ALTER TABLE booking ADD CONSTRAINT booking_pk PRIMARY KEY ( booking_id );
ALTER TABLE booking
ADD CONSTRAINT booking_customer_fk FOREIGN KEY ( customer_customer_id )
REFERENCES customer ( customer_id );
ALTER TABLE booking
ADD CONSTRAINT booking_customer_fkv2 FOREIGN KEY ( customer_customer_id1 )
REFERENCES customer ( customer_id );
客户表:
CREATE TABLE customer (
customer_id VARCHAR(20) NOT NULL,
first_name VARCHAR(20),
last_name VARCHAR(30),
booking_booking_id INTEGER NOT NULL
);
CREATE UNIQUE INDEX customer__idx ON
customer (
booking_booking_id
ASC );
ALTER TABLE customer ADD CONSTRAINT customer_pk PRIMARY KEY ( customer_id );
ALTER TABLE customer
ADD CONSTRAINT customer_booking_fk FOREIGN KEY ( booking_booking_id )
REFERENCES booking ( booking_id );
现在每当我尝试通过键入在 mysql xampp 服务器中插入客户时
INSERT INTO customer('customer_id')VALUE("1234");
我收到错误 #1452 - 无法添加或更新子行:外键约束失败 (airline_db.customer, CONSTRAINT customer_booking_fk FOREIGN KEY (booking_booking_id) REFERENCES booking (@987654331 @)) 我不知道为什么,因为 customer_id 是主键,Booking.customer_id 是外键,我不知道为什么 booking_id 包含在此错误中
这也是我的实体在数据建模器中的外观:
非常感谢您的帮助。
【问题讨论】:
标签: mysql xampp foreign-keys primary-key