Почти сразу при появлении SQL в работе появляется потребность обновлять базу. Однако вручную выслеживать, кто в большом наборе есть, а кого добавлять, — трата времени.
Запрос ниже добавляет новых сотрудников в перечень персонала. Если запись с таким именем уже существует, то эта инъекция обновит ее:
db = # WITH new_employees AS (SELECT *FROM ( VALUES ('George', 'Sales', 'Manager', 1000), ('Jane', 'R&D', 'Developer', 1200) ) AS t(name, department, role, salary))INSERT INTO employees (name, department, role, salary)SELECT name, department, role, salaryFROM new_employees ON CONFLICT (name) DOUPDATESET department = EXCLUDED.department, role = EXCLUDED.role, salary = EXCLUDED.salaryRETURNING *;#SQL