Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在mysql表中插入主键_Mysql_Xampp_Foreign Keys_Primary Key - Fatal编程技术网

无法在mysql表中插入主键

无法在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

我是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\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外键?哪个约束条件?是,因为一个客户可以有多个预订,但一个预订只能有一个客户。