PostgreSQL INSERT ON CONFLICT不存在则插入,存在则更新
近期有一个需求,向一张数据库表插入数据,如果是新数据则执行插入动作,如果插入的字段和已有字段重复,则更新该行对应的部分字段。
近期有一个需求,向一张数据库表插入数据,如果是新数据则执行插入动作,如果插入的字段和已有字段重复,则更新该行对应的部分字段。
1. 添加主键 alter table goods add primary key(sid); 2. 添加外键 alter table orders add foreign key(goods_id) references goods(sid) on update cascade on delete cascade; on update cascade: 被引用行更新时,引用行自动更新; on update restrict: 被引用的行禁止更新; on delete cascade: 被引用行删除时,引用行也一起删除; on dellete restrict: 被引用的行禁止删除; 3. 删除外键 alter table orders drop constraint orders_goods_id_fkey; 4. 添加唯一约束 alter table goods add constraint unique_goods_sid unique(sid); 5. 删除默认值 alter table goods alter column sid drop default; 6. 修改字段的数据类型 alter table goods alter column sid type character varying; 7. 重命名字段 alter table goods rename column sid to ssid;
insert into test_t3 values (1,1,'dddd'),(1,2,'eee'),(2,1,'ccc'),(2,2,'dddd') on conflict (t_id,t1_id) do update set t_name=excluded.t_name;