【问题标题】: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并且可以像你说的那样插入用户(电子邮件,角色)
    猜你喜欢
    • 2014-11-11
    • 2011-12-26
    • 1970-01-01
    • 2012-02-04
    • 2013-05-26
    • 1970-01-01
    • 2020-08-18
    • 2021-05-02
    • 2010-09-19
    相关资源
    最近更新 更多