PostgreSQL INSERT ON CONFLICT UPDATE(upsert)使用所有排除的值
发布时间:2020-12-13 16:35:56 所属栏目:百科 来源:网络整理
导读:当您插入一行(PostgreSQL 9.5),并且您希望可能的INSERT与可能的UPDATE完全相同时,可以这样写: INSERT INTO tablename (id,username,password,level,email) VALUES (1,'John','qwerty',5,'john@mail.com') ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,
当您插入一行(PostgreSQL> 9.5),并且您希望可能的INSERT与可能的UPDATE完全相同时,可以这样写:
INSERT INTO tablename (id,username,password,level,email) VALUES (1,'John','qwerty',5,'john@mail.com') ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,username=EXCLUDED.username,password=EXCLUDED.password,level=EXCLUDED.level,email=EXCLUDED.email 有更短的路吗?要说:使用所有的EXCLUDE值。 在SQLite中我曾经做过: INSERT OR REPLACE INTO tablename (id,user,email) VALUES (1,'john@mail.com')
Postgres没有实现等同于INSERT或REPLACE。从
ON CONFLICT docs(强调我的):
虽然它并没有给你更换的速记,但ON CONFLICT DO UPDATE更为普遍,因为它允许您根据预先存在的数据设置新的值。例如: INSERT INTO users (id,level) VALUES (1,0) ON CONFLICT (id) DO UPDATE SET level = users.level + 1; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |