CCCCCCCYYY_
2019-11-04 11:08
采纳率: 84.2%
浏览 963

Oracle如何防止插入相同数据?

设计的表是没有主键的,也就是可能会有很多相同的数据,初衷是因为每台终端每五分钟上传一条数据(包含终端的ID,IP,端口等数据,也就是随时会变的数据,除了终端ID)分别保存到四张表,而每张表用终端ID关联查询。如果设自增主键感觉没有必要,因为可能除了这个主键其他数据都相同,而且不好关联查询。

现在具体想要问的是:如何让oracle在没有主键的情况下有完全相同的一条记录时不插入数据?

Merge需要on和id,where not exist也是相同情况,

不知道还有什么方法?需要重新设计数据库吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Kevin.Y.K 2019-11-04 11:52
    已采纳

    初衷是因为每台终端每五分钟上传一条数据

    感觉逻辑有点问题,上传时间应该是不会一样的,所以对于一个终端来说,是不是重复只需要判断上传时间就可以了

    点赞 打赏 评论
  • sinat_41201574 2019-11-04 11:15

    逻辑很简单啊。在插入之前先查询是否存在相同数据,如果存在则插入,不存在则不插入,
    程序和sql都可以处理图片说明

    点赞 打赏 评论
  • lk8236 2019-11-04 11:21

    先查询是否存在相同数据

    点赞 打赏 评论
  • 世纪怪咖 2019-11-04 13:04

    加个索引约束行吗,需要判断的几个字段加联合唯一索引

    点赞 打赏 评论

相关推荐