Не работает ограничение вставки таблицы сопоставления MySQL - PullRequest
0 голосов
/ 23 мая 2018

У меня есть таблица сопоставления для клиентов и продуктов.Вот шаги

    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 голосов
/ 24 мая 2018

Я понял.JPA использовал движок MyISAM для создания таблиц, и он не поддерживает ограничения внешнего ключа.Поэтому, как только я изменил движок на InnoDB, проблема была решена.

0 голосов
/ 23 мая 2018

Этот подход не хорош.Но есть решение.

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

Вам нужно написать больше неумелого запроса, чтобы вставить в родительские таблицы записи, которых не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...