oracle表存在重复值不插入数据问题

zx870811130 2012-10-07 12:22:10
当程序给oracle的表插入一条数据时,判断当前数据表里面有没有存在重复数据,如果没有就插入,如果有就不插入。求思路。求大神们提点。。。
...全文
799 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
viaco2love 2013-06-04
  • 打赏
  • 举报
回复
merge into test a using ( select '1' as name, '女' as sex from dual ) b on (a.name=b.name and a.sex = b.sex) when not matched then  INSERT VALUES (1,'2','女');
zx870811130 2012-10-08
  • 打赏
  • 举报
回复
我在想可不可以写个触发器 当我程序插入数据的时候,启动触发器,然后在触发器里面做个语句块来处理唯一值这个异常 但是我没写过触发器 不知这个思路能否行得通 求指点.....
laokang426 2012-10-08
  • 打赏
  • 举报
回复
5楼正确,null是不执行任何操作。
book523 2012-10-08
  • 打赏
  • 举报
回复
查出重复值的SQL,如果有记录说明重复,没有则不重复。
select rowid,username,userpwd from a where a.rowid!=(select max(rowid) from a b where a.username=b.usernameand a.userpwd =b.userpwd );
vanjayhsu 2012-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
MERGE INTO tableA A
USING (筛选结果集) B
ON (A.XX=B.XX)
/*WHEN MATCHED THEN
UPDATE
SET LOW.KFRST = LOW1.KFRST */
WHEN NOT MATCHED THEN
INSERT
(FIELD1,..)
VALUES
(1,...);
……
[/Quote]

直接用MERGE INTO 不就行了。。。
zx870811130 2012-10-07
  • 打赏
  • 举报
回复
这样吧 写个简单例子吧
表 user 有两个字段

username userpwd

zhangsan 123
lisi 123

username字段是唯一值不能重复 如果重复放弃本次插入 这个插入操作是在C#程序写的 一报错程序端就停住了 现在问题是不能让它停 只能continue;
zx870811130 2012-10-07
  • 打赏
  • 举报
回复
这个null是放弃本次插入还是插入null值进去
人生无悔 2012-10-07
  • 打赏
  • 举报
回复
会有异常,做下异常处理,类似

...
exception
when dup_val_on_index then --印象中重复的异常是这个,若不确定可用others
null;--不做任何操作
zx870811130 2012-10-07
  • 打赏
  • 举报
回复
唯一约束建立之后,当插入重复值程序会挂掉吗??我需要它发现重复值的时候,不做任何操作,程序不能报异常,要继续执行下一次插入
fw0124 2012-10-07
  • 打赏
  • 举报
回复
加unique约束吧,这样有重复就会插入失败。
人生无悔 2012-10-07
  • 打赏
  • 举报
回复
merge into,insert into ...where not exists...都可以,但考虑到并发性,最好设置唯一键吧
软件钢琴师 2012-10-07
  • 打赏
  • 举报
回复

MERGE INTO tableA A
USING (筛选结果集) B
ON (A.XX=B.XX)
/*WHEN MATCHED THEN
UPDATE
SET LOW.KFRST = LOW1.KFRST */
WHEN NOT MATCHED THEN
INSERT
(FIELD1,..)
VALUES
(1,...);
你可以搜搜merge into 的yongf

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧