Вставьте, если существует

0

У меня две таблицы: вторая таблица имеет внешний ключ, который ссылается на первичный ключ первой таблицы. И когда я вставляю данные во вторую таблицу, я хочу сначала проверить, если строка с ключом iputed существует в первой таблице. В T-SQL это будет выглядеть так:

create procedure insert_order_products
@ order_id int
@ product_id int
AS
IF EXISTS (SELECT * FROM order where order.id=order_id)
IF EXISTS (SELECT * FROM product where product.id=product_id)
INSERT INTO order_products values(some values)

Как проверить IF EXISTS в mysql?

Теги:
tsql

1 ответ

1

Я думаю, вы можете попробовать использовать следующий запрос (INSERT с SELECT и WHERE)

INSERT order_products(col1,col2,...,colN)
SELECT @val1,@val2,...,@valN
WHERE EXISTS(SELECT * FROM order WHERE id=@order_id)
  AND EXISTS(SELECT * FROM product WHERE id=@product_id)

В MySQL я думаю, что это будет выглядеть следующим образом

INSERT order_products(col1,col2,...,colN)
SELECT @val1,@val2,...,@valN
FROM DUAL
WHERE EXISTS(SELECT * FROM order WHERE id=@order_id)
  AND EXISTS(SELECT * FROM product WHERE id=@product_id)

Или вы можете использовать

INSERT order_products(col1,col2,...,colN)
SELECT @val1,@val2,...,@valN
FROM (SELECT * FROM order WHERE id=@order_id) o
CROSS JOIN (SELECT * FROM product WHERE id=@product_id) p

Я думаю, что последний вариант лучше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню