oracle自增长列为什么那么麻烦?
我设计的一个数据库中大量的表中都把主键设成自增长。
问题一:难道我真的要每张表都对应一个自增列和触发器吗??痛苦中。
问题二:oracle设置自增长对性能是否有影响?怎样修改好点?
问题三:设置触发器有什么优化的解决方案吗?
小小虾米,先谢谢各位了。
兄弟,等你用到知道为什么序列(SEQUENCE)比触发器和自增长好的时候,你就不是虾米了,呵呵,
序列就是性能好,,,,,
触发器的话,可以参考我的博客的http://blog.csdn.net/java3344520/archive/2009/11/30/4907591.aspx
如果你只是每个表需要一个主键。这个主键只要保证唯一,不关心是不是每次加一。
也可以使用GUID函数解决。
取得GUID的函数SYS_GUID()。得到一个随机的16进制序列,保证唯一性。
使用oracle自身的自增,经常会遇到报ID重复错误。建议使用UUID
主键自增长用sequence就行了。为什么还要触发器
只要创建序列就行了!根本不用再创建触发器了!
1.每个表都创建一个序列。
2.嫌麻烦的话,所有表都共用一个序列。
反正序列的值可达10的27次方,你这辈子是用不完的了!无论你建多少张表。
相关问答:
安装了Oracle 10g,默认安装了orcl数据库,这个数据库能不能删除啊,还有我如果新建了其他数据库,怎么知道在web中登陆不同数据库的地址啊?
1
可以删除
2
在WEB地址栏中输入地址的时候指定新创建的数据库的IP ......
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后
#topas查看总是有一块磁盘%BUSY为90%以上,
数据库版本:oracle 9.2.0.7
数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04
#lslv -l lv04
......
我有两个表(A表和B表),机构完全相同:A 表建立触发器
当insert into A(id,name) values('1','zhangsan'); 我只想将name=zhangsan的时候将insert语句插入到B表中而A表不执行操作这个触发器应该怎么实现呢?
如: ......