SQL 触发检查行是否已经存在
SQL trigger to check if row already exists
所以我有两个 tables(订单和 fabric_order)。此 sql 在另一个 table 上完成插入后触发。我不想要重复的行,所以我想检查 table (fabric_orders) 是否已经有一行的代码等于另一个 table(订单)的代码,并且仅当不存在相同代码时才插入 table (fabric_order)
IF NOT EXISTS
(
select code
from orders
WHERE code=fabric_order.code
)
INSERT INTO fabric_order (order_id, code, start_date)
SELECT(id, code, deliver_date)
FROM orders
您不需要为其设置触发器 INSERT ... SELECT ... LEFT JOIN ..
也应该有相同的结果。
INSERT INTO fabric_order AS fabric_order_outer (
fabric_order_outer.order_id
, fabric_order_outer.code
, fabric_order_outer.start_date
)
SELECT(
orders.id
, orders.code
, orders.deliver_date
)
FROM orders
LEFT JOIN
fabric_order AS fabric_order_inner
ON
orders.code = fabric_order_inner.code
WHERE
fabric_order_inner.order_id IS NULL
所以我有两个 tables(订单和 fabric_order)。此 sql 在另一个 table 上完成插入后触发。我不想要重复的行,所以我想检查 table (fabric_orders) 是否已经有一行的代码等于另一个 table(订单)的代码,并且仅当不存在相同代码时才插入 table (fabric_order)
IF NOT EXISTS
(
select code
from orders
WHERE code=fabric_order.code
)
INSERT INTO fabric_order (order_id, code, start_date)
SELECT(id, code, deliver_date)
FROM orders
您不需要为其设置触发器 INSERT ... SELECT ... LEFT JOIN ..
也应该有相同的结果。
INSERT INTO fabric_order AS fabric_order_outer (
fabric_order_outer.order_id
, fabric_order_outer.code
, fabric_order_outer.start_date
)
SELECT(
orders.id
, orders.code
, orders.deliver_date
)
FROM orders
LEFT JOIN
fabric_order AS fabric_order_inner
ON
orders.code = fabric_order_inner.code
WHERE
fabric_order_inner.order_id IS NULL