oracle数据库中怎么能避免相同的数据插入数据库多遍?sql语句怎么处理呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库中怎么能避免相同的数据插入数据库多遍?sql语句怎么处理呢?相关的知识,希望对你有一定的参考价值。
对表设计主键,主键用序列自动生成。用主键 唯一区分每一行,防止数据重复
用merge 函数处理,判断数据是否存在,存在就更新,不存在就插入,这样也可以防止相同数据插入多遍。 merge 的具体用法百度下,有很多介绍这个的
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 表1select * from 表2 参考技术C insert into table_a (column_name) select column_name from table_b
以上是关于oracle数据库中怎么能避免相同的数据插入数据库多遍?sql语句怎么处理呢?的主要内容,如果未能解决你的问题,请参考以下文章
oracle的数据库中怎么将一张表中数据插入另一张表,两张表都存在