采用手动增长型字段选取sql server主键

sql server主键有多种选取的方式,下面为您详解采用手动增长型字段选取sql server主键的方式,供您参考,希望对您有所启迪。

创新互联建站专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,绵阳电信机房机柜租用服务有保障!

既然自动增长型字段会带来如此的麻烦,我们不妨考虑使用手动增长型的字段,也就是说sql server主键的值需要自己维护,通常情况下需要建立一张单独的表存储当前sql server主键键值。还用上面的例子来说,这次我们新建一张表叫IntKey,包含两个字段,KeyName以及KeyValue。就像一个HashTable,给一个 KeyName,就可以知道目前的KeyValue是什么,然后手工实现键值数据递增。在SQL Server中可以编写这样一个存储过程,让取键值的过程自动进行。代码如下:

 
 
 
  1. CREATE PROCEDURE [GetKey]@KeyName char(10),   
  2. @KeyValue int OUTPUT  
  3. AS   
  4. UPDATE IntKey SET @KeyValueKeyValue = KeyValue =  
  5. KeyValue + 1 WHERE KeyName = @KeyName   
  6. GO  

这样,通过调用存储过程,我们可以获得最新键值,确保不会出现重复。若将OrderID字段设置为手动增长型字段,我们的程序可以由以下几步来实现:首先调用存储过程,获得一个OrderID,然后使用这个OrderID填充Order表与OrderDetail表,最后在事务保护下对两表进行更新。

使用手动增长型字段作为sql server主键在进行数据库间数据复制时,可以确保数据合并过程中不会出现键值冲突,只要我们为不同的数据库分配不同的主键取值段就行了。但是,使用手动增长型字段会增加网络的RoundTrip,我们必须通过增加一次数据库访问来获取当前主键键值,这会增加网络和数据库的负载,当处于一个低速或断开的网络环境中时,这种做法会有很大的弊端。同时,手工维护主键还要考虑并发冲突等种种因素,这更会增加系统的复杂程度。

【编辑推荐】

SQL CHARINDEX函数的使用

SQL查询时间段的语句写法

三种SQL索引

SQL隐性事务实例

SQL事务的操作语法

当前名称:采用手动增长型字段选取sql server主键
分享地址:http://www.hantingmc.com/qtweb/news0/183300.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联