oracle数据库中怎么能避免相同的数据插入数据库多遍?sql语句怎么处理呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库中怎么能避免相同的数据插入数据库多遍?sql语句怎么处理呢?相关的知识,希望对你有一定的参考价值。

      对表设计主键,主键用序列自动生成。用主键 唯一区分每一行,防止数据重复

    用merge 函数处理,判断数据是否存在,存在就更新,不存在就插入,这样也可以防止相同数据插入多遍。 merge 的具体用法百度下,有很多介绍这个的

参考技术A 表中建立主键就能体现唯一性,插入相同的记录会报错;或者在表中某一字段上加唯一性约束也可以。
alter table customer add constraint f_unq unique (字段名);
参考技术B 表中建立主键就能体现唯一性,插入相同的记录会报错;或者在表中某一字段上加唯一性约束也可以。
alter table customer add constraint f_unq unique (字段名);
参考技术C INSERT INTO T_LOG ( LOG_ID ,LOG_NAME ) VALUES ( T_LOG.nextval strName ); T_LOG就是sequence的名字 不是将该字段省略~而是在插入值的时候 参考技术D 创建一个复合主键,两个问题就都解决了

oracle的数据库中怎么将一张表中数据插入另一张表,两张表都存在

1.二张表的话 如果将一张表插入另一张表 需要插入字段还是数据,如果是数据的话,那直接insert into table1(字段1,字段2,字段3.。。。) as select (字段1,字段2,字段3.。。。)from table2 ,
2.如果是二张表的字段不同 ,那要先建好字段,再用上面的方法插入,但是二张表要有相同的唯一 的字段来判断!例如二张表的同一行的数据KEY是想同的:insert into table1(字段1,字段2,字段3.。。。) as select (字段1,字段2,字段3.。。。)from table2 where table1.key = table2.key
参考技术A 假如 源表有数据, 目标表无数据。
INSERT INTO 目标表 SELECT * FROM 源表。

假如 源表 目标表都有数据, 要求 目标表 如果有数据则更新,没有则插入。
MERGE INTO 目标表
USING 源表
ON ( 关联条件 )
WHEN MATCHED THEN UPDATE SET 目标表.字段 = 源表.字段 -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(源表.字段列表) -- 源表有,目标表没有,插入

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/2879207af3e388370cd7da86.html

参考技术B insert into 表1
select * from 表2
参考技术C insert into table_a (column_name) select column_name from table_b

以上是关于oracle数据库中怎么能避免相同的数据插入数据库多遍?sql语句怎么处理呢?的主要内容,如果未能解决你的问题,请参考以下文章

oracle的数据库中怎么将一张表中数据插入另一张表,两张表都存在

oracle 插入 (10⁴m³)oracle中怎么插入这样的数据呢 10的4次方立方米

Oracle中插入数据

C# 无法向Oracle数据库插入数据

oracle sql优化技巧

oracle中只读取一条数据,怎么写