MySQL映射表插入约束不起作用

时间:2018-05-23 12:16:06

标签: mysql sql

我有一个客户和产品的映射表。以下是步骤

    create table `customer_products` (
       `customer_id` bigint not null,
        `product_id` bigint not null,
        primary key (`customer_id`, `product_id`)
    );

     alter table `customer_products` 
       add constraint `FK7urin54lem7yxy6umxf899t16` 
       foreign key (`customer_id`) 
       references `customer` (`customer_id`);

    alter table `customer_products` 
       add constraint `FKtfgjfwfykaef4wjk00ofyqq8y` 
       foreign key (`product_id`) 
       references `product` (`product_id`);

   insert into customer_products values(7,5); //should get a contraint error

当我插入此映射表时,尽管父表中没有相应的条目,但我在上面的insert语句中没有收到错误。我需要一些额外的选项来设置这个约束吗?

2 个答案:

答案 0 :(得分:0)

这个approch并不好。 但要有解决方案。

You can write a trigger on customer_products and set 'before insert'

您需要编写更多的intaligent查询以插入记录不存在的父表中。

答案 1 :(得分:0)

我明白了。 JPA使用MyISAM引擎创建表,它不支持外键约束。因此,一旦我将引擎修改为InnoDB,问题就解决了。