Я пытаюсь обновить таблицу db, проверив, существует ли мой столбец product_number
. Я знаю, что вы можете использовать INSERT OR UPDATE ON DUPLICATE KEY
, но столбец, который я пытаюсь использовать, не является первичным ключом.Вставить или обновить, если он не используется Первичный ключ
Я нашел следующий запрос в столбце стека, но я продолжаю получать ошибку Unrecognized statement type. (near Duplicate)
, когда я пытаюсь запустить ее с помощью phpMyAdmin.
DECLARE @numrecords INT
SELECT @numrecords = count(*)
FROM users_remark
WHERE product_number = '444'
IF @numrecords > 0 THEN
UPDATE products
SET product_name = 'abc',
product_description = def,
product_detail = '',
product_price = '100',
product_price_canada = '200'
WHERE product_number = '444'
ELSE
INSERT INTO products (product_number, product_name, product_description, product_price)
VALUES (444, abc, def, 100)
END IF
Почему этот запрос не работает?
Есть ли лучший способ достичь того, чего я пытаюсь достичь?
Дубликат или Признаться? Похоже, вы пытаетесь использовать что-то вроде оракула? – Farkie
Вы хотите, чтобы 'product_number' был уникальным, но это не первичный ключ таблицы. Вы не знаете, что такое первичный ключ, пока вы не получите запись через 'product_number'? Похоже, вы собираетесь сражаться в гору, если не сможете изменить таблицу. Может быть, построить индекс product_numbers? Если вы не разрешаете доступ к этой таблице нигде, у вас есть условие гонки. – NKijak
@NKijak Идеальной ситуацией было бы иметь номер продукта в качестве первичного ключа, но наш клиент изменил то, как они называют продукты, поэтому мы все еще находимся в процессе изменения приложения. До тех пор мне нужно, чтобы это работало, чтобы обновить таблицу продуктов. – bos570