Два внешних ключа в одной таблице sqlite3

#sqlite

#sqlite

Вопрос:

У меня есть 3 таблицы.

Проблема с третьей таблицей shop_order(возможно, нет)

Когда я запускаю скрипт python для создания таблицы, у меня появляется ошибка: sqlite3.OperationalError: рядом с «cart_id»: синтаксическая ошибка

Я попытался удалить поле cart_id или customer_id, оно работает. Но с двумя внешними ключами это не работает

 CREATE TABLE account
(
    id integer primary key
);

CREATE TABLE shop_cart
(
    id integer primary key,
    
    FOREIGN KEY (owner_id) REFERENCES account (id)
);

CREATE TABLE shop_order
(
    id integer primary key,
    

    customer_id integer,
    FOREIGN KEY (customer_id) REFERENCES account (id),

    cart_id integer,
    FOREIGN KEY (cart_id) REFERENCES shop_cart (id)

);

 

Комментарии:

1. На стороне примечания: в shop_cart есть опечатка; вы вызываете столбец id в одном месте и owner_id в другом.

2. Я удалил owner_id и другие поля для более удобного чтения

Ответ №1:

Внешние ключи следуют за определениями столбцов:

 CREATE TABLE shop_order
(
  id integer primary key,
  customer_id integer,
  cart_id integer,
  FOREIGN KEY (customer_id) REFERENCES account (id),
  FOREIGN KEY (cart_id) REFERENCES shop_cart (id)
);
 

Однако вам следует пересмотреть дизайн вашей таблицы:

  • Для чего хороша таблица shop_cart?
  • Что бы это значило, если shop_order имеет customer_id #1 и cart_id, связанные с customer # 2?
  • Почему вы называете это account в одной таблице и customer в другой? Оставайтесь последовательными.