如何解决无法在mysql表中插入主键
我是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
外键(booking_booking_id
)参考booking
(booking_id
),我不知道为什么,因为customer_id
是主键,而Booking.customer_id
是外键,我也不知道为什么{{ 1}}包含在此错误中
这也是我的实体在数据建模器中的外观:
非常感谢您的帮助。
解决方法
您不能插入这种光晕
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不能为NULL,但是您没有默认值
此外,外键意味着在向客户添加行之前,必须在预订时存储此类ID
最后一个问题是,只有在有customer_id的情况下才可以添加预订,反之亦然,因此请摆脱对customer的约束
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。