关于数据库设计时的自动增量字段的问题
来源:互联网 发布:淘宝如何解除支付宝 编辑:程序博客网 时间:2024/05/16 17:08
自动增量不能作为主键(需要被其它表作为外键的主键),主要原因是:
1、当需要进行事务插入时,会有矛盾。如:Order(OrderID, OrderName)与OrderDetail(OrderID,....),由于这两个表的数据需要采用事务插入,那就会出现是先有鸡还是先有蛋的问题。因为OrderID必须要插入后才会产生,然而OrderDetail表需要与Order表同时插入。
2、由于自动增量不能手动输入,所以会在以后维护(特别是多库合并时)会带有很大的麻烦。其中第2点。后来又有人说,自动增量是可以手动输入的。为了验证这一点,重新做了测试。
1、对于MySQL
建表User(ID,Name),其中ID为自动增量。连续插入几条记录后:
1
2
3
4
1,aaa
2,bbb
3,ccc
4,ddd
这时,可以通过update语句来使第2条记录改为(5,bbb),但是,在插入第5条记录时,如果不手动指定ID为6的话,会报主键冲突。因为自动增量是从最后一个值+1的,而不是取最大值+1的。
但是,在报主键冲突之后,如果再次尝试时,会成功。因为此时自增量已为6了。
2、对于MSSQL Server
根本无法采用Update语句来修改自动增量的值。
综上所述。以后还是尽量不要采用自动增量来作为需要给其它表作为外键的主键。
但是自动增量还是有用的。如果该表相对独立,即主键不需要给其它表作为外键时,可以采用自动增量。
或者,可以为表建两个字段,一个为自动增量作为主键,一个为非自动增量作为唯一索引,后者作为其它表的外键。
转自:http://www.jiazi.cn/blog/?id=43
0 0
- 关于数据库设计时的自动增量字段的问题
- 数据库设计时字段类型的选择原则
- postgresql 的自动增量字段
- 系统调优之系统架构的搭建--数据库字段设计时的要领
- activereport设计时绑定数据库的方法
- 数据库设计时的一个原则
- 数据库设计时的一张表格
- 网站设计时要注意的问题
- FPGA/cpld设计时遇到的问题
- PCB设计时覆铜应注意的问题
- 关于PowerDesigner 中columns设计时name和code自动对应的修改
- 关于把设计时代码从运行时代码中分离出来的问题
- 系统设计时关于性能问题处理的几点心得
- 系统设计时关于性能问题处理的几点心得
- 数据库设计时,varchar和int的选择
- 数据库设计时需要考虑的 三大范式
- 数据库表设计时一对一关系存在的必要性
- 数据库设计时遇到的几种数据类型
- ubuntu wireshark can't find netcard
- 我们该怎么样去定义分享经济
- ButterKnife 最新版本8.4.0详细使用
- JVM堆优化与相关配置参数
- Android笔记:给EditText设置边框
- 关于数据库设计时的自动增量字段的问题
- SpringMVC WEB项目 jsp引入的js,css文件找不到路径问题()
- nginx使用ssl模块配置HTTPS支持
- 返回上一页并刷新
- 回调函数的作用
- 第15周项目2-用哈希法组织关键字
- 不只是给面试加分 -- Java WeakReference的理解与使用
- 关系型数据库到文档型数据库的跨越
- JAVA中读取文件的几种方法