У меня есть эта часть сценария python для создания таблиц в mysql db
#Product
TABLES['product'] = (
"CREATE TABLE product"
"(prod_id smallint,"
"name varchar(255),"
"price int,"
"constraint pk_prod_id primary key (prod_id)"
");")
#Sales
TABLES['sales'] = (
"CREATE TABLE sales"
"(sales_id smallint,"
"name varchar(255),"
"quantity int,"
"buy_id smallint,"
"date DATE,"
"constraint pk_sales_id primary key (sales_id,name)"
");")
#Purchase
TABLES['purchase'] = (
"CREATE TABLE purchase"
"(purchase_id smallint,"
"name varchar(255),"
"quantity int,"
"sup_id smallint,"
"date DATE,"
"constraint pk_purchase_id primary key (purchase_id,name)"
");")
# Adding foreign key
query = 'ALTER TABLE sales ADD foreign key(buy_id) references buyers(buy_id)'
cursor.execute(query)
query = 'ALTER TABLE purchase ADD foreign key(sup_id) references suppliers(sup_id)'
cursor.execute(query)
Пока все работает нормально, но здесь есть основная проблема.
query = 'ALTER TABLE sales ADD foreign key(name) references product(name)'
cursor.execute(query)
query = 'ALTER TABLE purchase ADD foreign key(name) references product (name)'
cursor.execute(query)
код ошибки 1215, поэтому нельзя добавлять внешние ключи
Это работает, если я делаю это
query = ('ALTER TABLE sales ADD foreign key(prod_id) references product(prod_id)')
cursor.execute(query)
query = ('ALTER TABLE purchase ADD foreign key(prod_id) references product(prod_id)')
cursor.execute(query)
, но я предпочитаю работать с именем, а не с prod_id, потому что это беспорядок.
как я могу решить эту проблему? я пробовал с типом int, но мне не нравится это решение, более того, мне приходится переписывать много запросов.