当前位置:首页 > 数据库 > Oracle

有则更新无则插入(mySql,oracle)

有则更新无则插入(mySql,oracle)

2018-02-01

 

1 Orcale

                create
                table table1(id varchar2(100) primarykey,name varchar2(1000),address varchar2(1000));

-- 执行两次,会报  [Err] ORA-00001: unique constraint (PBOC.SYS_C0014610) violatedinsertinto table1(id,name,address)values(01001,影子,河北) ;

-- 查看constraintSELECT UC.OWNER,
       UC.CONSTRAINT_NAME,
       UC.CONSTRAINT_TYPE,
       UC.TABLE_NAME,
       UCC.COLUMN_NAME,
       UC.SEARCH_CONDITION,
       UC.R_CONSTRAINT_NAME
FROM USER_CONSTRAINTS UC
  INNERJOIN USER_CONS_COLUMNS UCC
    ON (UC.CONSTRAINT_NAME = UCC.CONSTRAINT_NAME) and UC.TABLE_NAME=TABLE1;


-- merge有则更新,无责插入
merge into table1 t1  
using (select01001 id,影子2 name,辽宁 address from dual) t2  
on (t1.id = t2.id)  
when matched thenupdateset t1.name = t2.name, t1.address = t2.address  
whennot matched theninsertvalues (t2.id, t2.name,t2.address);  

select*from table1;

droptable table1;

 

2 Sql

                create
                table table1(id varchar(100) primarykey,name varchar(1000),address varchar(1000));

-- 执行两次,会报  [Err] 1062 - Duplicate entry ‘01001‘ for key ‘PRIMARY‘insertinto table1(id,name,address)values(01001,yingzi,hebei) ;

-- 无责插入(返回:受影响的行: 1),有则更改(返回:受影响的行: 2)INSERTINTO  table1(id,name,address) VALUES (01001,yingzi2,hunan)  ON DUPLICATE KEYUPDATE name=yingzi2,address=hunan;

select*from table1;

droptable table1;

 

原文:https://www.cnblogs.com/Ming8006/p/8400620.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!