Sync a staging table in one statement
SQL
-- PostgreSQL: apply staging inserts and updates to the live table atomically.
-- Assumes staging_products.sku is unique; everything runs in one transaction.
BEGIN;
-- Update only rows whose values actually changed.
UPDATE products AS p
SET name = s.name,
price = s.price,
updated_at = now()
FROM staging_products AS s
WHERE p.sku = s.sku
AND (p.name, p.price) IS DISTINCT FROM (s.name, s.price);
-- Insert rows that do not exist yet.
INSERT INTO products (sku, name, price, updated_at)
SELECT s.sku, s.name, s.price, now()
FROM staging_products AS s
WHERE NOT EXISTS (
SELECT 1 FROM products AS p WHERE p.sku = s.sku
);
COMMIT;