- 主键不应该有任何意义,只是为了标志数据的唯一性.
- 现在做的项目,因为牵涉到数据转移的原因,对主键没有进行大的改动,现在的主键,除了标志数据来源以外,还有数据信息的年月日等,非常的麻烦
- 自动编号的主键,如果动态的生成表单后,还需要重复生成trigger和sequence来自增长,非常难以维护,而且以后数据迁移也会变得相当的棘手
- max+1,现在采用的就是这个方法,如果数据量非常大的情况下,取max会很慢,而且在并发的情况下会产生相同的数据而导致数据不能正常的插入数据库
- GUID主键,这是目前比较好的生成主键的办法,在.NET里可以直接使用System.Guid.NewGuid()进行生成,在SQL里也可以使用 NewID()生成
- 缺点是:
GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的
GUID 的值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着如果在数据库中使用 uniqueidentifier 键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。