Пытался указывать как можно точнее c в заголовке. У меня есть таблица restaurants
с внешним ключом category_id
. Я хочу ввести данные в мою таблицу категорий
CREATE TABLE categories(
id PRIMARY KEY,
main_label,
sub_category,
);
Но только если эти данные еще не существуют - что я делаю с
INSERT INTO categories(main_label, sub_category)
SELECT * FROM (SELECT 'yum food', 'alt') AS tmp
WHERE NOT EXISTS (
SELECT main_label, sub_category FROM categories WHERE mainLabel = 'yum food' && sub_category = 'alt'
) LIMIT 1;
, и это работает.
Если данные уже есть, я (скажем, «yum food» и «alt») хочу выбрать его «id», чтобы я мог ввести их в свою таблицу restaurants
.
Моя текущая попытка с ТРАНЗАКЦИЕЙ была ужасной, и я сталкиваюсь с проблемами повсюду (как это будет очевидно при прочтении)
START TRANSACTION;
SET var = SELECT COUNT(*) FROM categories WHERE main_label = 'yum food' && sub_category = 'alt';
IF var > 0 THEN
INSERT INTO categories(main_label, sub_category)
VALUES('yum food', 'alt');
ELSE
SELECT id FROM categories WHERE main_label = 'yum food' && sub_category = 'alt';
END IF;
COMMIT;