zoukankan      html  css  js  c++  java
  • 文章标题 Oracle数据库中dual表使用

    一. 业务场景
    业务流程需要进行写入和更新的比较,所以有原表和历史表。
    要求表中的ID唯一性,以及两张表的ID关联,另外后续可能数据库会进行迁移

    二.方案选择

    方案一:id设置为int型自增长。

    这种做法编程简单,无需考虑id唯一性,由数据库帮忙维护。但是在此业务场景下存在缺点
    1. 这里存在两张表关联。id自增长无法确保数据唯一性,也就无法保证原表与历史表进行数据映射。比如说,现在需要向原表A和历史表A_HISTORY表中插入相同的一条数据。插入A表后,发现无法取到A表的ID(A表的ID是主键,根据其他条件无法确保数据的唯一性)也就无法保证A_HISTORY表与A表能到插入相同的一条数据
    2. 因为后期需要进行数据库的迁移,而ID自增长的。在数据迁移过程中可能会发生错误

    方案二:利用虚拟表dual表
    dual表是系统表,有SYS用户创建,默认在system表空间下,与用户表空间分开的。通过在dual表中创建序列既可以进行表ID的唯一性控制。

    三.实现
    1. 可视化操作
    在oracle工具sql developer中。在system表空间schema目录。建立序列Update_sequence,设置递进步长,最小值、最大值等。

    2.sql 语句

    create SEQUENCE Update_sequence
      INCREMENT BY 1 MAXVALUE 5000 CYCLE;

    两种方法都可以创建序列,向表中插入数据时就可以使用
    SELECT UPDATE_SEQUENCE.NEXTVAL FROM DUAL
    作为原表和历史表的ID。这样既保证了id的唯一性,也确保了原表与历史表的数据能够映射起来

  • 相关阅读:
    博客作业,每周例行报告 第二次作业
    接口基本知识
    python学习-unittest笔记
    读取monkey日志,并存放到另一个文件中
    python学习1-django创建项目及应用
    简单正则表达式python
    adb devices 显示端口被占用时如何处理
    将txt文件 导入到excel中
    将 列表转换成 字典格式
    将文件中的内容读出来且 用逗号隔开换行显示
  • 原文地址:https://www.cnblogs.com/stoneFang/p/6715311.html
Copyright © 2011-2022 走看看