#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 в другой? Оставайтесь последовательными.