背景

在一条记录完结时,自动向表中加入一条新的记录,采用的是事务处理,修改现有记录,并新增一条记录,直接采用的insert语句会报错

//主键冲突
unique constraint (XXXXXX) violated

其实没有主键冲突,但是不知道为什么它会报错,并且插入也是成功,也就说,插入成功还抛出异常,很懵逼

解决思路

插入的时候判断该记录是否存在,然而我们通常使用where都是在查、改、删,很少在增中使用where。

一通倒腾

insert into 'tablename'
(column1, column2,,,,,)
select
各列的值
from
dual
where not exists
(select * from tablename where 判断条件)

这里注意两点

  1. 不能有values,通常我们在insert数据时都会加上values,但是该场景下,不能加(这是我经历的坑)
  2. dual不能更改,这个是oracle数据库中内置的一个表,用于不明确的查询源,有兴趣可以查找更多的资料

oracle带条件的Insert语句的更多相关文章

  1. 【分享】生成带数据的Insert语句工具(源码)

    这个工具用于导出带数据的Insert语句,方便在不同版本的数据库上导出数据.有人说sql server 2008自带导出带数据的Insert语句(连接)但是我的数据库版本没有这个选项,无奈之下自己简单 ...

  2. 如何通过sql的insert语句插入大量字符串到oracle的clob字段?

    当通过insert语句直接插入大量字符串(主要是html的内容),超过4000字符时候,就会报: ORA-01489: 字符串连接的结果过长 虽然字段是clob,足以存储,但是通过这种直接插入的时候, ...

  3. oracle之insert语句总结

    insert语句总结 16.1 第一类,insert语句:单行插入 1)SQL> create table a (id int,name char(10) default 'aaa');   / ...

  4. 通过带参数的Sql语句来实现模糊查询(多条件查询)

    #region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books&quo ...

  5. Python批量执行oracle中的insert语句

    从oracle导出一个表的数据,导出的格式是insert语句,数据量30万. 直接在PL/SQL Developer中执行,速度非常慢,脚本中也是100条数据提交一次.因为需要的时间太长,每次中断后, ...

  6. insert 语句后面不要跟 where 等条件语句

    insert 语句后面不要跟 where 等条件语句: update 才用得到.

  7. 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

    oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ...

  8. 自由导入你的增量数据-根据条件将sqlserver表批量生成INSERT语句的存储过程实施笔记

    文章标题: 自由导入你的增量数据-根据条件将sqlserver表批量生成INSERT语句的存储过程增强版 关键字 : mssql-scripter,SQL Server 文章分类: 技术分享 创建时间 ...

  9. oracle PL/SQL管理命令语句

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

随机推荐

  1. 【转】opatch学习

    [转自:https://yq.aliyun.com/articles/28007,仅作学习用途] Opatch 是oracle公司开发的安装,卸载,检测patch冲突的工具,管理oracle所有已经安 ...

  2. Emmet插件使用

    目录 Emmet插件使用 1.生成html5文档 2.header部分 3.body部分 Emmet插件使用 标签(空格分隔): php 前端 1.生成html5文档 html5:5 ! 2.head ...

  3. js如何判断数据类型

    1.最常见的判断方法:typeof console.log(typeof a) ------------> string console.log(typeof b) ------------&g ...

  4. Java Iterator ListIterator 理解

    一. Iterator 常用操作 next hasNext remove 先上源码:JDK8 简化版本,用于说明问题 private class Itr implements Iterator< ...

  5. Cygwin安装篇,windows平台上运行的类UNIX模拟环境

    1.虚拟光驱的安装 虚拟光驱下载 一路下一步,不再阐述,这些广告选项不要选 2.安装文档,双击ISO文档 ISO下载地址 链接:http://pan.baidu.com/s/1miFVCYO 密码:z ...

  6. 安装docker和更改docker镜像下载目录

    centos6.x系列: yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm yum inst ...

  7. Spring笔记1

    Spring Spring特点 1. 方便解耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合.有了Spring,用户 ...

  8. 从多Sheet的Excel文件中抽取数据

    在数据驱动管理中增加Excle的JDBCODBC驱动 类名:sun.jdbc.odbc.JdbcOdbcDriver URL模板:jdbc:odbc:driver={Microsoft Excel D ...

  9. Python全栈day 02

    Python全栈day 02 一.循环语句 while 用法 num = 1 while num <= 10: print(num) num += 1 # 循环打印输出1-10 while el ...

  10. linux课后作业1

    本实验6第一题:菜单驱动程序. 随便进到某个目录,vim driver.sh 把代码写进去. #!/bin/bash function welcome() { echo -e "\n&quo ...