zoukankan      html  css  js  c++  java
  • Sql UpdateOrInsert

    SqlServer(先更新,受影响条数为0,则Insert,通过事务):

    begin tran
        update table set  column=columnvalue   where wherestr
    if @@ROWCOUNT==0
    begin
        insert into table (column) values (columnvalue)
    end 
    commit tran

    Oracle(Merge Into的原理是,从using 搜出来的结果逐条与on条件匹配,然后决定是update还是Insert):

    MERGE INTO table t  
    --USING (SELECT whereStrColumn FROM SYS.DUAL) s 大部分情况下使用SYS.DUAL是个好的选择,但是如果同时插入或更新通过个主键,会导致ORA-00001违反唯一键约束
    USING (SELECT whereStrColumn FROM table where whereStr) s 
    ON  (t.whereStrColumn=s.whereStrColumn) 
    WHEN MATCHED 
    THEN UPDATE SET column=columnValue
    WHEN NOT MATCHED THEN INSERT  (column) VALUES (columnValue)

    MySql(Mysql语法提供了):

    INSERT INTO table  
    (column)  VALUES (columnValue)   
    ON DUPLICATE KEY UPDATE   
    column=columnValue
  • 相关阅读:
    Arraw function
    constructor&object 的联系与对比
    for each in&for in&for of
    编程历史
    正则表达式
    DOM&BOM
    关于码云0095的一篇文章。
    vue2路由导航守卫(钩子函数)
    原声ajax请求数据
    express 创建项目
  • 原文地址:https://www.cnblogs.com/lcawen/p/11490716.html
Copyright © 2011-2022 走看看