无法在mysql表中插入主键
我是sql的完全初学者,我正在使用mysql xampp服务器,其中有一个customers表和一个bookings表。我使用带有ddl的mysql数据建模器来生成创建这些表的代码。 以下是我的2个表格的创建方式: 预订表:无法在mysql表中插入主键,mysql,xampp,foreign-keys,primary-key,Mysql,Xampp,Foreign Keys,Primary Key,我是sql的完全初学者,我正在使用mysql xampp服务器,其中有一个customers表和一个bookings表。我使用带有ddl的mysql数据建模器来生成创建这些表的代码。 以下是我的2个表格的创建方式: 预订表: CREATE TABLE booking ( booking_id INTEGER NOT NULL, b_city VARCHAR(30), b_date DA
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\u db
customer
,约束customer\u booking\u fk
外键(booking\u booking\u id
)引用booking
(booking\u id
)我不知道为什么,因为customer\u id
是主键,而Booking.customer\u id
是外键,我不知道为什么Booking\u id
包含在这个错误中
这也是我的实体在data modeler中的外观:
非常感谢您的帮助。您不能插入这样的值
CREATE TABLE customer (
customer_id VARCHAR(20) NOT NULL,
first_name VARCHAR(20),
last_name VARCHAR(30),
booking_booking_id INTEGER NOT NULL
);
这意味着您必须至少输入1个booking_id,该id不能为空,但您没有默认值
另外,外键意味着在预订时,在客户中添加行之前,必须存储这样一个id
最后,您还有一个问题,因为您只有在拥有客户id时才能添加预订,反之亦然,所以请消除客户中的约束您的意思是我应该消除客户中的预订id外键?哪个约束条件?是,因为一个客户可以有多个预订,但一个预订只能有一个客户。