• mysql CONFLICT 冲突


    1.IGNORE 

    当使用INSERT语句向表中添加一些行数据并且在处理期间发生错误时,INSERT语句将被中止,并返回错误消息。因此,可能不会向表中没有插入任何行。
    但是,如果使用INSERT INGORE语句,则会忽略导致错误的行,并将其余行插入到表中。

    insert IGNORE into table(xxx,xxx) VALUES (xxx,xxx);

    insert IGNORE into `test` (`id`,`name`,`times`,`add_time`)
    VALUES
    ('1','woq','3','1529304418'),
    ('2','woa','4','1529304452'),
    ('3','woz','5','1529304425'),
    ('4','wow','6','1529304445');

    2.REPLACE INTO

    如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。
    否则,直接插入新数据。
    要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。 

    REPLACE INTO table (xxx,xxx) VALUES (xxx,xxx);
    REPLACE into `test` (`id`,`name`,`times`,`add_time`)
    VALUES
    ('1','woq','3','1529304418'),
    ('2','woa','4','1529304452'),
    ('3','woz','5','1529304425'),

    ('4','wow','6','1529304445');

    使用注意事项:

    https://yq.aliyun.com/articles/57855

    3.ON DUPLICATE KEY UPDATE 

    ON DUPLICATE KEY UPDATE 语法并不是MySQL的标准语法,如果在句尾指定该语法,他会根据指定的主键或者唯一标示来更新数据库的内容

    具体的操作是想根据唯一标示查看数据库是否存在该记录,如果存在该记录就更新,如果不存在就会插入一条新的记录,

    INSERT INTO TABLE (xxx,xxx) VALUES(xxx,xxx)  ON DUPLICATE key UPDATE `field_name`='xxx';
    INSERT INTO test (`id`,`name`,`times`,`add_time`) VALUES ('1','kk','4','1531282881') ON DUPLICATE KEY UPDATE `add_time`='1531284238';
  • 相关阅读:
    IsPostBack
    多次点击Button后DropDownList选中的值变为默认值?
    数据表数据的复制
    使用DriverManager获取数据库连接
    通过Driver获取数据库连接
    URL学习笔记
    使用UDP进行数据发送的实例一
    利用Socket 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈
    关于TCP的两个小练习_第一个博客~
    oracle-19c-单实例安装-一键式脚本
  • 原文地址:https://www.cnblogs.com/niuben/p/14302615.html
Copyright © 2020-2023  润新知