文章标题 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的唯一性,也确保了原表与历史表的数据能够映射起来
文章标题 Oracle数据库中dual表使用的更多相关文章
- Oracle 数据库中查看表空间的2种方法
在Oracle数据库中查看表空间使用状况是我们在实际应用中经常涉及到的,以下的内容就就是对Oracle 数据库中查看表空间使用状况时所要用到的SQL的描述,希望你能从中获得自己想要的东西. Oracl ...
- 如何导出远程oracle数据库中的表结构
从远程oracle数据库上导出指定表的表结构语句有两种方法: 方法一:通过sql语句获得 1,make sure that you can connect the remote database. 2 ...
- oracle数据库中的表设置主键自增
oracle中没有自增字段,可通过序列+触发器间接实现,cmd中sqlplus登录,直接运行即可.一般要经过一下几步: 1建立数据表 create table Test_Increase( ...
- 关于从Oracle数据库中删除表数据
1,删除表 drop 1.1 执行drop table table_name 语句 被 drop后的表被放在用户回收站(user_recyclebin)里,而没有被直接删除掉,回收站里的表可以被恢复 ...
- Oracle数据库中创建表空间语句
1:创建临时表空间 create temporary tablespace user_temp tempfile 'Q:\oracle\product\10.2.0\oradata\Test\xyrj ...
- oracle数据库中创建表空间和临时表空间,以及用户和密码以及设置密码永不过期
首先进入oracle用户,命令是: su - oracle sqlplus /nolog connect system/123456@ora11g 或者 [oracle@localhost ~]$ ...
- 使用sql developer 导出Oracle数据库中的表结构
MS SQLServer的客户端工具做的的确比较好,直接右键,导出数据库就OK了,而且MS的客户端导出的是xxx.dbf文件,直接附加到别的数据库上就OK了 Oracle的sql developer就 ...
- Oracle数据库中的dual表
select user from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间 select S ...
- Oracle中dual表的用途介绍
导读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情. dual是一个虚拟表,用来构成select的语法规则,or ...
随机推荐
- java开发笔记
replace与replaceAll的区别 replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是 ...
- 浙大patB习题的一点总结
嘛嘛,patB的习题已经结束了,这些基本上没有啥特别难的,但还是有几道特别坑爹的题(o(╯□╰)o),还是把这些题的代码打包上传吧.
- rsync 系统用户/虚拟用户 备份web服务器数据及无交互定时推送备份
一.服务环境 (1),WEBserver(192.168.10.130) : BACKserver(192.168.10.129) (2),BACKserver服务器部署,安装所需软件,并启动 (3) ...
- SQL AND和OR求值顺序
假如需要列出价格为10美元及以上,且由DLL01或BRS01制造的所有产品.下面的SELECT语句使用组合的AND和OR操作符建立了一个WHERE子句: ; 分析▼ 请看上面的结果.返回的行中有4行价 ...
- Java锁Synchronized对象锁和类锁区别
java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁.线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁.获得内置锁的唯一途径就是进入这个锁的保 ...
- 关于html+ashx开发中几个问题的解决方法
在跟html+ashx打交道的园友们肯定会发现,这种模式虽然优美,但在开发中会遇到一些难处理的地方.我也不例外,下面是自己在实际开发中总结出来的几条经验,希望跟大家分享,更希望得到大家的建议和更好的解 ...
- centos 7 安装nvidia显卡驱动
How to install Nvidia drivers in CentOS 7 - Tutorial : http://www.dedoimedo.com/computers/centos-7- ...
- Android APT(编译时代码生成)最佳实践
越来越多第三方库使用apt技术,如DBflow.Dagger2.ButterKnife.ActivityRouter.AptPreferences.在编译时根据Annotation生成了相关的代码,非 ...
- 牛客网编程练习之PAT乙级(Basic Level):1034 写出这个数
AC代码: import java.util.*; /** * @author CC11001100 */ public class Main { public static void main(St ...
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...