请选择 进入手机版 | 继续访问电脑版

PostgreSQL在插入数据时校验重复

[复制链接]
苍野狼步 发表于 2021-1-2 19:42:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  1. insert into        "user"(         display_name,        telephone,        address,        username,        "password")select    '王凯歌',        null,        null,        'wangkaige',        '$2a$10$i2Wwn3AFp8t'where        not exists(        select                id        from                "user"        where                username ='wangkaige'                and delete_flag = false );
复制代码
该句分两个段落举行剖析:
第一个段落为:
  1. select    '王凯歌',        null,        null,        'wangkaige',        '$2a$10$i2Wwn3AFp8t'where        not exists(        select                id        from                "user"        where                username ='wangkaige'                and delete_flag = false )
复制代码
where子句后跟的是一段判定表达式,如当我们执行
  1. select * from "user" where true-- 或 select * from "user" where 1=1
复制代码
时,将恒创建地查询所有的数据。
  1. not exists(        select                id        from                "user"        where                username ='wangkaige'                and delete_flag = false )
复制代码
这段代码判定的是是否存在一个username='wangkaige'而且未被删除的记载。当不存在时,将返回空缺记载,因此not exists判定乐成。这个时候sql片断
  1. select    '王凯歌',        null,        null,        'wangkaige',        '$2a$10$i2Wwn3AFp8t'where        not exists(        select                id        from                "user"        where                username ='wangkaige'                and delete_flag = false )
复制代码
将返回一行记载
?column??column??column??column??column?王凯歌nullnullwangkaige$2a$10$i2Wwn3AFp8t这行记载的值将作为insert语句values添加到库中去。这里的表头不消关心,不要紧的。
当原来查询的记载存在时,自行脑补一下。
第二个段落
第二个段落就是insert语句段落了,再粘一遍
  1. insert into        "user"(         display_name,        telephone,        address,        username,        "password")select    '王凯歌',        null,        null,        'wangkaige',        '$2a$10$i2Wwn3AFp8t'where        not exists(        select                id        from                "user"        where                username ='wangkaige'                and delete_flag = false );
复制代码
来源:https://blog.csdn.net/shangcunshanfu/article/details/112075501
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )