zoukankan      html  css  js  c++  java
  • MySQL与PostgreSQL中解决插入主键冲突的方法

    PostgreSQL的案例

    注意:on conflict do 语法,是在postgresql9.5版本推出的!,之前的版本不兼容!PostgreSQL upsert功能(insert on conflict do)的用法

    安装及配置pgcli工具

    # brew安装
    brew install pgcli
    
    # 配置文件位置
    ~/.config/pgcli/config
    
    # 配置别名的地方
    vim ~/.config/pgcli/config
    
    [alias_dsn]
    # example_dsn = postgresql://[user[:password]@][netloc][:port][/dbname]
    # 本地的连接
    local_docker_5433 = postgresql://postgres:password@127.0.0.1:5433/appserver_runfast_clone

    操作过程

    # 进入数据库 创建数据库 使用数据库
    pgcli -D local_docker_5433
    
    create database whw_test_db;
    
    use whw_test_db;
    
    # 创建表
    create table users 
         (user_id varchar(255) not null
             constraint users_pkey
                 primary key, 
          user_name varchar(22) not null
    )
    
    # 确认下表结构
    d+ users;
    
    # 插入几条数据
    insert into users(user_id, user_name) values('123','whw111'),('222','www222');
    
    # 确认数据
    select * from users;

    再往里面插入数据的话会报主键冲突:

    on conflict do nothing

     insert into users(user_id, user_name) values('123','naruto'),('222','sasuke') on conflict(user_id) do nothing;

    on conflict do update set 

    insert into users(user_id, user_name) values('123','naruto'),('222','sasuke') on conflict(user_id) do update set user_name=excluded.user_name;

    MySQL的案例

    安装配置mycli 

    // brew 安装
    brew install mycli
    
    // 用户名:root;密码:123;本地端口是:3307
    mycli -uroot -p123 -h127.0.0.1 -P 3307

    初始化过程

    # 创建数据库
    create database whw_mysql_db;
    use whw_mysql_db;
    
    # 建表
    create table users(
        user_id varchar(255) not null,
        user_name varchar(22) not null,
        primary key (user_id)
    );
    
    # 插入几行数据
    insert into users(user_id,user_name) values("111","whw1"),("222","whw2");

    ~~~

    再往里面插入相同user_id的数据会报错:

    insert ignore 

    insert ignore into users(user_id,user_name) values("111","naruto"),("222","sasuke");

    ON DUPLICATE KEY UPDATE

    insert ignore into users(user_id,user_name) values("111","naruto"),("222","sasuke") on duplicate key update user_name=values(user_name);

    ~~~

    自己的其他文档

    并发处理IO任务与MySQL中ON DUPLICATE KEY UPDATE的使用

  • 相关阅读:
    JSONObject和JSONArray区别及基本用法
    MySQL中UTF8编码的数据在cmd下乱码
    js页面刷新跳转的几种方式及区别
    JS中使用EL表达式
    $.ajax()方法参数详解
    Firefox默认英文修改中文
    配置文件的相对地址和绝对地址设置
    IntelliJ IDEA设置统一编码utf-8
    java.lang.SecurityException: Prohibited package name:
    flask的多个url对应同一个视图函数
  • 原文地址:https://www.cnblogs.com/paulwhw/p/15416292.html
Copyright © 2011-2022 走看看