У меня две таблицы: вторая таблица имеет внешний ключ, который ссылается на первичный ключ первой таблицы. И когда я вставляю данные во вторую таблицу, я хочу сначала проверить, если строка с ключом 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?
Я думаю, вы можете попробовать использовать следующий запрос (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
Я думаю, что последний вариант лучше.