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

SQL Server  中数据表往往会设置自增列,常见的比如说 首列的ID列. 往数据表插入新数据的时候,自增列是跳过的,无需插入即会按照设置的自增规则进行列增长.那么,如果我们想往自增列插入我们指定的数据时该怎么做呢?  一:建立一张简单的测试表 ,), num INT) 二:如果强行插入数据时: ,) 消息 ,级别 ,状态 ,第 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'randy_test'中的标识列指定显式值. 可以看到,数据库提示 不能给标识列指…
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(…
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(…
1,生成建表脚本 选中要导的表,点右键-编写表脚本为-create到  ,生成建表脚本 2,建表(在新库),但不建外键关系 不要选中生成外键的那部分代码,只选择建表的代码 3,导数据,用SQL STUDIO的“导出数据”功能 从源库向目标库导入 勾选“启用标识列插入”选项:  不要选“多表优化”选项 4,建立外键关系 仅选择第一步中建表脚本中的 外键关系代码,执行…
示例 修改前:1列多行数据 修改后:合并成一列 示例语句 1 2 3 4 5 6 7 8 9 10 11 select 类别,     名称 = (         stuff(             (select ',' + 名称 from Table_A where 类别 = A.类别 for xml path('')),             1,             1,             ''         )     ) from Table_A as A grou…
我们一般情况下通过分组函数group by来查询重复的列 ) R 但是查询出的结果不能显示该表的其他列 想要查询一张表中有多个列重复的数据且也要显示该表的其他列 SELECT M.* FROM [dbo].[Table] M, (SELECT * ) R ) M1 where M.[column1]=M1.[column1] AND M.[column2]=M1.[column2]…
IDENT_CURRENT('TableName')为当前的最大标识值, IDENT_INCR('TableName')为设置的标识值增量, 两者相加即为下一个标识值 如: SELECT IDENT_CURRENT('TableName') + IDENT_INCR('TableName');…
@@IDENTITY返回最后插入的标识值. 语法@@IDENTITY 返回类型numeric 注释在一条 INSERT.SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值.若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL.若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值.如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的…
最新在开发中用到了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…
我们公司的数据库全部是使用GUID做主键的,很多人习惯使用int做主键.所以呢,这里总结一下,将两种数据类型做主键进行一个比较. 使用INT做主键的优点: 1.需要很小的数据存储空间,仅仅需要4 byte . 2.insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能. 3.index和Join 操作,int的性能最好. 4.容易记忆. 5.支持通过函数获取最新的值,如:Scope_Indentity() . 使用INT做主键的缺点 1.如果经常有合并…
Create PROCEDURE [dbo].[SP_UpdateIdentityId] ( ) , @beforeId INT , @afterId INT ) AS BEGIN IF @beforeId IS NULL OR @afterId IS NULL OR @tableName IS NULL BEGIN PRINT 'param is null' RETURN END DECLARE @tb_id INT= OBJECT_ID(@tableName) IF @tb_id IS NU…
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…
需求描述 在生产环境中,很多情况下需要采集数据,用以定位问题或者形成基线. 关于SQL Server中的数据采集有着很多种的解决思路,可以采用Trace.Profile.SQLdiag.扩展事件等诸多方案. 几种方案各有利弊,其中从SQL Server2012版本开始,微软的开始各种整合这些采集方案,力推扩展事件. 对于上述的数据采集只是一种实现手段,对于采集完数据的存储没有统一的规范,并且对于多服务器的数据采集及汇总没形成统一的规范. 本篇实现 1.通过SQL Server自带的数据采集器实现…
需求描述 在生产环境中,很多情况下需要采集数据,用以定位问题或者形成基线. 关于SQL Server中的数据采集有着很多种的解决思路,可以采用Trace.Profile.SQLdiag.扩展事件等诸多方案. 几种方案各有利弊,其中从SQL Server2012版本开始,微软的开始各种整合这些采集方案,力推扩展事件. 对于上述的数据采集只是一种实现手段,对于采集完数据的存储没有统一的规范,并且对于多服务器的数据采集及汇总没形成统一的规范. 本篇实现 1.通过SQL Server自带的数据采集器实现…
SqlDataToScript是根据表数据进行生成 Insert Into语句,此工具还有一个好处是可以对自增列插入固定值,例如:自增的列id值为5,但是5这个行值已经删除,如果想存储Id自增列值为5的行数据,按照常规的方法时存储不进去的. 使用SqlDataToScript生成sql语句可以储存到数据库. SqlDataToScript的下载地址:http://pan.baidu.com/s/1kU9w9Mn  提取密码:7amh 下面开始生成sql语句: 1.双击SqlDataToScrip…
介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,SQL Server 2012之前版本不存在此问题. 背景…
我们今天主要向大家讲述的是SQL Server数据库之向SQL Server自增字段正确的插入值的实际操作步骤,在一般的情况下,我们不能向 SQL Server 数据库自增字段中插入值,如果非要这么干的话,SQL Server 就会好不客气地给你个错误警告: Server: Msg 544, Level 16, State 1, Line 1 Cannot insert explicit value for identity column in table 't' when identity_i…
介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,SQL Server 2012之前版本不存在此问题. 背景…
原文: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.其他相关知识. 通过前面几篇文章介绍了…
什么是自增列 在SQL Server中可以将Id列设为自增.即无需为Id指定值,由SQL Server自动给该列赋值,每新增一列Id的值加一,初始值为1. 需要注意的是即使将原先添加的所有数据都删除,然后新增数据.此时记录的Id依然不会从1开始,而是原先的最大值加1. 自增列的取值范围 一般在定义自增列时,都会指定其数据类型为int类型.而且也只有int类型及其相关数据类型的列可以指定为自增列. 下面是自增列可以使用的数据类型: (,,,,,,) 到 (,,,,,,) 字节 (,,,) 到 (,…
不同于SQL Server的是,Oracle中插入数据的时候,没有自增列或者是标识列,但是,我们又不想显式的进行主键的插入,这里,必须在Oracle数据库中指定一个标识列,或者说是一个序列.具体方法如下: 先创建一个序列,具体方法为:CREATE SEQUENCE "数据库名"."序列名" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER: 要么写一个触发器…
=================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途. 本文不定期修正完善. 本文链接:http://www.cnblogs.com/wlsandwho/p/5075789.html 耻辱墙:http://www.cnblo…
SQL语句实现取消自增列属性 --由于在SQL-SERVER中,自增列属性不能直接修改,但可以通过以下方式变向实现 --1.如果仅仅是指定值插入,可用以下语句,临时取消 SET IDENTITY_INSERT TableName ON INSERT INTO tableName(xx,xx) values(xx,xx) SET IDENTITY_INSERT TableName OFF --2.新增一列,删除自增列,修改改列名 alter table a add xxx int update a…
想要将值插入到自动编号(或者说是标识列,IDENTITY)中去,需要设定 SET IDENTITY_INSERT 示例: 1.首先建立一个有标识列的表:CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40)) 2.尝试在表中做以下操作:INSERT INTO products (id, product) VALUES(3, 'garden shovel') 结果会导致错误:“当 IDENTITY_INSERT…
本文转自:http://blog.csdn.net/love_zt_love/article/details/7911104 刚使用oracle,它和sql server 好多地方还是有所不同的,简单的问题,都得从头学起......创建一张表,字段如下: oracle不像sql server 有关键字identity直接可插入数据时自增 ,实现oracle 自增列第一步,创建一个sequence.create sequence Tempinfo_seq increment by 1 start…
SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列 truncate table tablename --truncate方式也可以重置自增字段 --重置表的自增字段,保留数据 DBCC CHECKIDENT (tablename,reseed,0) -- 设置允许显式插入自增列 SET IDENTITY_INSERT tablename ON -- 当然插入完毕记得要设置不…
oracle不像sql server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用Sequence Create Table Tempinfo( ids int not null, names nvarchar2(), sex ) ) ,); ,); select * from Tempinfo --drop table Tempinfo 实现oracle 自增列第一步,创建一个sequence. CREATE SEQUENCE Tempinfo…
自己总结的一些常用sql :插入.删除.批量更新.判重.新增列.数据库连接数 ---------------- 批量插入跨数据库 insert into ejpms.dbo.role (Name,Info,[Level]) select RoleName,RoleNote,[Level] from ttrj.dbo.T_role ------ 删除表 truncate table ejpms.dbo.role -------- 批量更新 update table1 set name=table2…
declare @Table_name varchar(60) set @Table_name = ''; if Exists(Select top 1 1 from sysobjects           Where objectproperty(id, 'TableHasIdentity') = 1             and upper(name) = upper(@Table_name)         )     select 1else select 0 -- or if Ex…
SQL语句获取数据库中的表主键,自增列,所有列   获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME<>'dtproperties' 2:EXEC sp_pkeys @table_name='表名' 3: select o.name as 表名,c.name as 字段名,k.colid as 字段序号,k.keyno as 索引顺序,t.name as…