在 SQL Server 表的主键有自增Id ,和  GUID。

  1.  自增Id

    优点:索引空间小,索引连续。在大量数据插入的时候性能有特别大的优势。

    缺点:可移植性差,在数据迁移的时候。

  2. GUID

    优点:数据迁移的时候很容易。

    缺点:索引占用空间大,因为GUID的随机性,在插入数据的时候会导致索引上的页争用。

SQL SERVER 2005新加了 NEWSEQUENTIALID(),这是个内置函数,不能用与 SELECT

-- 创建的表加约束 default newsequentialid()
create table #t
(
id uniqueidentifier not null default newsequentialid()
,name varchar(100)
)
go --插入表100条数据,并且要指定列名
insert into #t(name) values('a')
go 100 select * from #t

查询结果:

    

如果这个表的值要被其他表作为外键使用,获得这个值有两中方法:

  1、SQL Server 2005添加的新特性 OUTPUT

insert into #t(name)
output inserted.id
values('a')

  2、也可以像插入自增Id一样,获取当前最大的值,

    MSDN对NEWSEQUENTIALID()解释:在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。

insert into #t(name) values('a')
select max(id) from #t

https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms189786(v=sql.90)

SQL Server 的 主键 解决方案 NEWID() , 自增ID的更多相关文章

  1. mybatis 针对SQL Server 的 主键id生成策略

    SQL Server中命令: select newId()  ,可以得到SQL server数据库原生的UUID值,因此我们可以将这条指令写到 Mybatis的主键生成策略配置selectKey中. ...

  2. SQL SERVER 从其它数据库中复制带自增ID主键的表数据

    SQL SERVER两个结构相同(或不同)的表,互相导入数据,方法有两种: 1.使用SQL SERVER 自带的导出.导入功能,在库名上右击,“任务”,导出数据.导入数据,这个操作具体不就不多讲了. ...

  3. sql server删除主键约束所想到的

    从网上找到了下面一段代码: declare @Pk varchar(100);select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('表 ...

  4. SQL Server设置主键自增长列

    1.新建一数据表,里面有字段id,将id设为为主键 create table tb(id int,constraint pkid primary key (id)) create table tb(i ...

  5. [置顶] T-sql sql server 设置主键约束、标示列、唯一约束、默认值、约束、创建表

    ----选择数据库 use ythome go ----查看表是否存在 if Exists ( select * from sysobjects where name='sys_menu' and t ...

  6. Sql Server设置主键和外键

    设置主键 https://jingyan.baidu.com/article/9158e0003349a7a2541228fd.html 设置外键 https://jingyan.baidu.com/ ...

  7. sql server 删除主键、外键、索引、约束的脚本

    最近公司项目要升级新版本,涉及到数据库升级中各种约束.亦是整理出如下脚本方便以后查询. --删除全文索引 DECLARE c0 cursor for SELECT'DROP FULLTEXT INDE ...

  8. sql server 查找主键、外键、索引、约束

    主键约束 SELECT   tab.name AS [表名],   idx.name AS [主键名称],   col.name AS [主键列名] FROM   sys.indexes idx    ...

  9. sql server中主键列的插入问题

    仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'dbo.t_test'中的标识列指定显式值. SET IDENTITY_INSERT dbo.t_test ON ,'c' ...

随机推荐

  1. LeetCode153.寻找旋转排序数组中的最小值

    153.寻找旋转排序数组中的最小值 描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 请找出 ...

  2. POJ_2478 Farey Sequence 【欧拉函数+简单递推】

    一.题目 The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbe ...

  3. vue脚手架初始化的项目 npm run build 无效,没有反应

    找到build文件夹的check-versions文件,注释掉如图所以代码即可.

  4. asp.net mvc 静态化

    静态化的基本理解就是,常用的资源以文本形式保存,客户端访问时无需经过程序处理,直接下载 但是不存在的文件需要经过程序处理,文件内容如果需要有更动或删除,则直接删除文件本身 1.IIS Express ...

  5. apache 2.4 访问权限配置

    在apache 2.4里,访问权限配置与2.2不同,如果设置不对,则会报403错误,日志中会报 AH01630: client denied by server configuration.   [S ...

  6. [转] 如何在ie11里使用a连接创建动态下载文件流

    [From] https://segmentfault.com/q/1010000009470664 查了资料,可以使用微软独家的msSaveBlob, 这个方法支持ie10及以上. var down ...

  7. PIE SDK专题制图打开模板

    1.    功能简介 在PIE SDK中,所有的制图元素.视图范围以及排版等都可以保存成一个模板,以供多次重复使用.使用时只需要打开该模板,加载相应数据,就可以直接出图了,省去了重复制作图幅的麻烦,方 ...

  8. PIE SDK地图书签

    地图书签,可以理解为暂时记录当前地图的范围和放大级别,在后续的操作中如果想回到地图之前的状态,就可以点击保存的书签就可以回到此状态,如图所示: 地图刚加载的时候是一幅世界地图 我们将地图的中心拖到南美 ...

  9. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...

  10. CSS3--底部菜单上拉效果

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...