sqlserver中有关标识字段的两种方法.doc
文本预览下载声明
int(或bigint)+标识列(又称自动增长字段)
uniqueidentifier(又称Guid、UUID)
?
?
?
?
(1)设计表时:列属性—标识规范—是标识(选择是)
用标识列实现字段自增可以避免并发等问题(两个人同时插入数据出错现象),不要开发人员控制自增。
用标识列的字段在Insert的时候不用指定主键的值。将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
?
?
当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示:不允许保存更改。
您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。
如果要去掉此提示,可从“工具”菜单中选择“选项”,在“选项”对话框中,选择Designers,选择“表设计器和数据库设计器”,清除“ 阻止保存要求重新创建表的更改”复选框。
?
工具—选项—designers—阻止保存要求重新创建表的更改
?
?
?
?
(2)
Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机。
?
SQLServer中生成GUID的函数newid(),即在新建查询里输入select? newid()
?
?
.Net中生成Guid的方法:Guid.NewGuid(),返回是GUID的类型
GUID? id=GUID.newGuid();
Console.writeLine(id);
Console.readKey();
?
?
程序—Microsoft? windows? SDK? V6.0A—tools—GUID生成器
?
?
??????? GUID显示数据顺序和插入数据顺序不一定一致。排列按GUID顺序。
?
?
Guid类型主键的默认值设定为newid()就会自动生成,很少这么干。
????
数据类型为uniqueidentifier的列设值默认值为newid()。插入其他列数据后,右键—执行SQL(X)就会自动填充uniqueidentifier列的数据。
?
?
?
(*)Int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。
(*)Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。
业界主流倾向于使用Guid。
显示全部