SQL 如何在自增列插入指定数据

SQL Server  中数据表往往会设置自增列,常见的比如说 首列的ID列。 往数据表插入新数据的时候,自增列是跳过的,无需插入即会按照设置的自增规则进行列增长。那么,如果我们想往自增列插入我们指定的数据时该怎么做呢?

 一:建立一张简单的测试表

CREATE TABLE randy_test (id INT IDENTITY(1,1), num INT)

二:如果强行插入数据时:

INSERT INTO randy_test VALUES  (1,11)

消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表‘randy_test‘中的标识列指定显式值。

可以看到,数据库提示 不能给标识列指定显示值,除非 将数据表设置IDENTITY_INSERT为ON

三:设置标识列插入开关 开启,然后执行我们的插入操作

SET IDENTITY_INSERT randy_test  ON
INSERT INTO randy_test  (id,num) VALUES  (1,11);
INSERT INTO randy_test (id,num) VALUES  (2,22);
set identity_insert randy_test  OFF

(1 行受影响)

(1 行受影响)

结果如下图:

SELECT  *FROM  randy_test AS rt

id num
1 11
2 22

原文地址:https://www.cnblogs.com/randy-fu/p/9081354.html

时间: 2024-10-19 07:36:11

SQL 如何在自增列插入指定数据的相关文章

sqlserver 自增ID插入指定数据

set identity_insert 表名 ON --允许对自增列Id插入指定数据 insert into table_name(Id,Name) values(1,'test') set identity_insert 表名 OFF --关闭对自增列Id插入指定数据 注意: 1.set identity_insert只对当前会话生效. 2.set identity_insert 表名 ON 设置后,必须显示指定Id,否则插入错误.如insert into table_name values(

sql 查询表格中多列重复的数据并显示该表的其他列

我们一般情况下通过分组函数group by来查询重复的列 SELECT [column1],[column2] FROM [dbo].[Table] where 1=1) R group by [column1],[column2] having count(*) > 1 但是查询出的结果不能显示该表的其他列 想要查询一张表中有多个列重复的数据且也要显示该表的其他列 SELECT M.* FROM [dbo].[Table] M, (SELECT * FROM (SELECT [column1]

通过EasyUI Tree说明SQL GUID和自增列ID的使用场景

最新在开发中用到了EasyUI里面的Tree,通过API可以看到这个Tree的数据格式如下: 其中ID比较重要,API也说了,最开始我考虑到GUID比自增ID多占用了一些空间,所以采用的自增ID,测试数据库结构如下: 其中,表TB_Menu中的MENU_ID为标识列,步长值为1,表TB_MenuGroup中的MENU_GROUP_ID也为标识列,步长值为1,Menu_Group_ID为主外键关系,我在页面上需要将数据库中所有的菜单都加载出来供用户选择,首先加入测试数据: INSERT INTO

SQL GUID和自增列做主键的优缺点

我们公司的数据库全部是使用GUID做主键的,很多人习惯使用int做主键.所以呢,这里总结一下,将两种数据类型做主键进行一个比较. 使用INT做主键的优点: 1.需要很小的数据存储空间,仅仅需要4 byte . 2.insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能. 3.index和Join 操作,int的性能最好. 4.容易记忆. 5.支持通过函数获取最新的值,如:Scope_Indentity() . 使用INT做主键的缺点 1.如果经常有合并

SQL Server获取自增列下一个Id

IDENT_CURRENT('TableName')为当前的最大标识值,IDENT_INCR('TableName')为设置的标识值增量, 两者相加即为下一个标识值 SELECT IDENT_CURRENT('TableName') + IDENT_INCR('TableName'); 参考链接:https://social.microsoft.com/Forums/zh-CN/07c3a188-5ae1-4623-ba14-0ae2148f5be0/sql-server-id?forum=sq

设计表的时候,对于自增列做逻辑主键使用的一点思考

本文出处:http://www.cnblogs.com/wy123/p/7581380.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 关于自增列 自增列作为数据库的一个特性之一,在MSSQL和MySQL以及Oracle中都被支持.之前在网上发现一个类似的问题,是关于MySQL的:“为什么InnoDB表最好要有自增列做主键?”自增列作为一项特性,(可能)会应用到表的设计方面,不管是在那种数据库平台下.抛开具

Python 模拟SQL对文件进行增删改查

1 #!/usr/bin/env python 2 # _*_ coding:UTF-8 _*_ 3 # __auth__: Dalhhin 4 # Python 3.5.2,Pycharm 2016.3.2 5 # 2017/05/15 6 7 import sys,os 8 9 def where(dbfile,where_list): #条件是一个list 10 11 def and_or_where(sub_where_list): 12 '''获取and或同时含有and.or关键字的条

SQL Server 2012 自动增长列,值跳跃问题

介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,SQL Server 2012之前版本不存在此问题. 背景

SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识. 通过前面几篇文章介绍了