不存在时创建postgressql

k75qkfdt  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(471)

我已经设法写了一行,说通过电子邮件找到某个用户,并分配一个角色。只是想知道是否有一种方法可以说create if not exist并指定一对if用户

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>
ncgqoxb0

ncgqoxb01#

你可以用这个 insert ... on conflict 语法。为此,您需要对列设置一个unique或primary key约束 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

相关问题