【问题标题】:Create if not exist PostgresSql如果不存在则创建 Postgresql
【发布时间】:2020-06-01 20:51:55
【问题描述】:
我设法写了一行,说通过电子邮件定位某个用户并分配一个角色。只是想知道是否有办法说如果不存在则创建并指定几个如果用户
Create if not exist ->
<sql>
UPDATE USERS SET ROLE = ‘ROLE_ADMIN’ WHERE EMAIL = ‘test@gmai.com’
UPDATE USERS SET ROLE = ‘ROLE_ADMIN’ WHERE EMAIL = ‘tes1t@gmai.com’
UPDATE USERS SET ROLE = ‘ROLE_ADMIN’ WHERE EMAIL = ‘test2@gmai.com’
</sql>
【问题讨论】:
标签:
sql
postgresql
sql-update
sql-insert
【解决方案1】:
您可以使用insert ... on conflict syntax。为此,您需要对列 email 设置唯一键或主键约束。如果它还不存在,您可以按如下方式创建它:
alter table users add constraint users_unique_email unique(email);
那么你可以这样做:
insert into users (email, role)
values(
('test@gmai.com', 'ROLE_ADMIN'),
('test1@gmai.com', 'ROLE_ADMIN'),
('test2@gmai.com', 'ROLE_ADMIN')
)
on conflict(email) do update set role = excluded.role
【讨论】:
-
谢谢你的回答,我正在使用liquidbase, 因为我有这个我不需要alter table add constrain并且可以像你说的那样插入用户(电子邮件,角色)