`
yuyanshan
  • 浏览: 48193 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle插入时,若表中不存在该信息则插入,否则更新主键外的其他信息

阅读更多
  
--测试数据
create table table1(id varchar2(100),name varchar2(1000),address varchar2(1000));
insert into table1(id,name,address)values('01001','影子','河北') ;
commit;

--插入
merge into table1 t1
using (select '01002' id,'影子' name,'河北' address from dual) t2
on (t1.id = t2.id)
when matched then
     update set t1.name = t2.name, t1.address = t2.address
when not matched then
     insert values (t2.id, t2.name,t2.address);
commit;

--查询结果
select * from table1
01001    影子    河北
01002    影子2    辽宁

--更新
merge into table1 t1
using (select '01001' id,'不是影子' name,'山西' address from dual) t2
on (t1.id = t2.id)
when matched then
     update set t1.name = t2.name, t1.address = t2.address
when not matched then
     insert values (t2.id, t2.name,t2.address);
commit;


--查询结果
select * from table1

01001    不是影子    山西
01002    影子2    辽宁

--删除测试数据
drop table table1;


安全一点的做法
begin
    insert into Table (ID,Value,..) values(1001,'222',...); 
    commit; 
  exception 
    when dup_val_on_idx then 
      update Table set value = '222' where id = 1001;
      commit;
    when others then
      Rollback;
  end;
分享到:
评论

相关推荐

    oracle主键自动增长方法

    oracle创建表时主键自动增长方法 5 测试反复执行如下语句:insert into Test_Increase(Username) values('test')6 查看插入结果:userid username1 test2 test3 test4 test5 test6 test7 test8 test9 test

    Oracle存在修改,不存在插入记录

    接触编程以来,在数据存储方面一直用的MS SQL。Oracle这名字对我来说是如此的熟悉,但是...  我们先来说个很常见的开发案例,有一张Account表,有两个字段分别为AccountID, AccountName,其中AccountID为主键,往这个

    Java使用Mybatis将数据批量插入到Oracle

    Java实现使用Mybatis将数据批量插入到Oracle数据库,并且可以使用Oracle序列来生成主键

    oracle数据库主键自增并且返回主键值

    1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 order ##确保...

    oracle主键自动增长

    ysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,但我们可以用序列和触发器来实现这样的功能.

    Oracle创建主键自增表(sql语句实现)及触发器应用

    主键自增在插入数据的时候是很实用的,可以获取并操作返回的插入记录的ID,接下来介绍Oracle如何创建主键自增表,感兴趣的你可以了解下,就当是巩固知识,希望此文对你有所帮助

    Oracle中多表关联批量插入批量更新与批量删除操作

    对于查询肯定是可以多表关联的,其实对于除了查询之外也是可以进行多表关联过滤数据的,从而达到在Oracle中查到目标数据即可更新,从而规避规避以往需要单独查一次数据然后在按照100-300的批次做插入,更新,删除的...

    Navicat Premium中Oracle创建主键自增的方法

    触发器名称,混合不选,每行,触发前,插入时,启用 2.下面展示触发器代码。 // An highlighted block BEGIN SELECT SEQ_EXAM_KNOWLEDGE_BASE.nextval INTO :NEW.ID FROM DUAL; END; 3.两个引用写一下 到此这...

    oracle中自动编码

    oracle中解决自动插入主键时,自动编码!

    oracle建表工具

    在excel内编辑好表结构(包括字段名、类型、长度、主键、是否允许为空、默认值、联合主键)。该 程序根据excel自动生成建表语句(创建表、主键)还...内容,如果向此表插入的主键不为空,以此不空主键内容插入表中。

    oracle序列主键自增长

    当向表中插入数据时,主键值自动加一. 实现方法1: 建立一个最小为1,最大为nomaxvalue的一个序列号会自动循环的序列 create sequence 序列名 increment by 1 start with 1 nomaxvalue nocycle; .......

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...

    最新Mybatis插入数据返回自增主键详细配置

    Mybatis插入数据以后只会返回影响的数据库行数,如果是插入一条数据成功则返回1,失败返回零,插入多条返回插入成功的数量。 通过注解或者xml配置无法直接返回自增的主键。Mybatis插入数据返回的自增主键会自动设置...

    Oracle索引组织表

    索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的索引。索引组 织表的数据是根据主键排序后的顺序进行排列的,这样就提高了...但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重 新排序)

    mybatis自增主键文档

    mybatis进行插入操作时,如果表的主键是自增的,...基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键,至于其他的手动生成唯一主键的问题在这里就不讨论了,这里主要说明下在mybatis中对于自增主键的配置。

    Mybatis批量插入数据返回主键的实现

    主要介绍了Mybatis批量插入数据返回主键的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Oracle8i_9i数据库基础

    §10.1.6 在查询中不让记录被更新 217 §10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not in和Not Exists 218 §10.1.9 关于 COPY命令 218 §10.1.10 列值为NULL情形的处理 219 §10.1.11 使用 product_user_...

    oracle数据库经典题目

    7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将...

Global site tag (gtag.js) - Google Analytics