oracle 插入数据前判断表中是否存储重复数据

有时候用oracle的数据库,插入数据的时候需要判断一下该条数据是否已经存在。

我们的第一思路如下,首先执行下面这个sql:

select count(*) isExists from t_test_lll;

然后判断isExists等于0与否,如果等于0,则执行insert。

上面这样写,也可以,但是多写很多代码,不利于后期维护。

其实oracle可以内置在insert语句中进行判断,如下sql:

insert
when (not exists (select 1 from t_test_lll where id = '111')) then
into t_test_lll(id) select '111' from dual;

这样,当数据库里有一个id=‘111‘的记录的时候,就不会进行insert操作了。

时间: 2024-10-06 11:50:13

oracle 插入数据前判断表中是否存储重复数据的相关文章

Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID CODE 1 code1 2 code2 3 code2 4 code2 5 code3 通过以上表中数据可以看出 code 是有重复数据的,此时如果我们直接添加唯一键,会报错. 通过 PL/SQL 可视化操作,或者通过 SQL 语句添加(ENABLE NOVALIDATE 的作用是约束新增数据但不会

删除oracle表中的完全重复数据

今天数据库除了个问题:项目中的一张表,数据是从另外一个系统中相同的表里弄过来的,但是可能由于昨天同事导数据导致我这张表中的数据出现了完全相同的情况(所有字段),全部是两条,需要删除相同的数据. 做法:1.创建中间表, 2.将原表中的不重复数据放入中间表, 3.删除原表数据 4.将中间表数据放入原表 5.删除中间表 --创建中间表 CREATE TABLE ATT_SCATTER_REQ_NUM_TEMP AS (SELECT distinct * FROM ATT_SCATTER_REQ_NUM

Sql server的Merge语句,源表中如果有重复数据会导致执行报错

用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说明这个问题. 现在我们有一张表叫T_Class_A,其建表语句如下: CREATE TABLE [dbo].[T_Class_A]( [ID] [int] IDENTITY(1,1) NOT NULL, [ClassName] [nvarchar](50) NULL, [StudentTotalCo

oracle将查询到的数据插入到数据库的表中

一.Oracle数据库中,把一张表的查询结果直接生成并导入一张新表中.   例如:现有只有A表,查询A表,并且把结果导入B表中.使用如下SQL语句:   create table b as select * from a   二.Oracle数据库中支持把查询结果导入到另外一张表中.   例如:有两个表A和B   1)如果两个表的表结构是否相同,但要插入的字段类型相同:   (1)把A表的全部字段数据插入到B表中: insert into B select * from A;   (2)把A表中

sqlite expert导入excel表格 (包括使用问题、以及把 一个表的数据插入到另一个表中)

一.sqlite导入excel 1.打开要导入的excel --- 另存为(2007版点击左上角OFFICE图标即可找到) --- 保存类型:CSV类型 (提示什么不兼容什么的,一律点确定.) 2.打开sqlite expert ,选择建好的数据库文件(或者是导入的已存在的db文件,或者是自己新建一个.db数据库文件). 右击文件名---选择最后一个import text file(CSV,TSV) 3.(如果没有建过和这个excel名相同的表)右边Destination选择第一项new tab

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

MySql中把一个表的数据插入到另一个表中的实现代码--转

MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码.下面我以mysql数据库为例分情况一一说明: 1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: ?

ORACLE—003:Create之创建表前判断表是否存在

建表前如何判断表是否存在呢,因为table是不支持replace的.下面的sql能帮到你. create前先判断表是否存在.例如,如果存在则drop掉那个表.当然你也可以定义自己的操作. declare v_cnt Number; begin select count(*) into v_cnt from user_tables where upper(table_name) like '%TMP_CLOB_SQL%'; if v_cnt>0 then execute immediate 'DR

sql将一个表中的数据插入到另一个表中

列名不一定要相同,只要你在HH中列出要插入列的列表跟select   from   mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的. 比如: insert   into   hh   (fielda,fieldb,fieldc)   select   fieldx,fieldy,fieldz   from   mm ---更新计量点中不存在的数据,将台帐中的信息转移到计量点中 insert into MetricPoints (MeterID,MetricPointNa