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;