在Insert和Update中具有相同值的PostgreSQL Upsert(冲突时)
当我在插入中使用相同的值时,是否可以简化语法。。。关于冲突状态在Insert和Update中具有相同值的PostgreSQL Upsert(冲突时),postgresql,postgresql-9.6,Postgresql,Postgresql 9.6,当我在插入中使用相同的值时,是否可以简化语法。。。关于冲突状态 INSERT INTO cars (car_id, car_type, car_model) values (1, 'tesla', 'model s') ON CONFLICT (car_id) DO UPDATE SET car_type = 'tesla', car_model = 'model s'; 此类语句还有很多,因为它们是在每次应用程序更新时运行的脚本的一部分 基本上,我正在寻找一种方法来避免
INSERT INTO cars
(car_id, car_type, car_model)
values
(1, 'tesla', 'model s')
ON CONFLICT (car_id) DO UPDATE SET
car_type = 'tesla',
car_model = 'model s';
此类语句还有很多,因为它们是在每次应用程序更新时运行的脚本的一部分
基本上,我正在寻找一种方法来避免两次指定相同的值。使用关键字:
这也适用于多行,例如:
INSERT INTO cars
(car_id, car_type, car_model)
values
(1, 'tesla', 'model s'),
(2, 'toyota', 'prius')
ON CONFLICT (car_id) DO UPDATE SET
car_type = excluded.car_type,
car_model = excluded.car_model;
这看起来很棒。即使所有的值都应该更新,你也必须指定被排除的列吗?@tommy:是的,很遗憾。
INSERT INTO cars
(car_id, car_type, car_model)
values
(1, 'tesla', 'model s'),
(2, 'toyota', 'prius')
ON CONFLICT (car_id) DO UPDATE SET
car_type = excluded.car_type,
car_model = excluded.car_model;