sql自动增长标识导致导入数据问题的解决方法
来源:asp之家 发布时间:2023-07-04 04:39:22
对于一个设了自动增长标识的数据表来说,它的字段的值是由数据库自动设置的;这在导数据时很麻烦。
当我们导数据时,我们往往想想将标识字段的数据也导进来,怎么办呢?
方法有两种:
1.用数据库管理工具在界面将表的自动增长标识去除,导完数据,再在界面里改回来。(这种方法麻烦,且要动数据表设置中,不推荐)
2.用SET IDENTITY_INSERT OFF和SET IDENTITY_INSERT ON(推荐这种方法)
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
database_name
指定的表所在的数据库的名称。
schema_name
表所属架构的名称。
table
包含标识列的表的名称。
注释
任何时候,一个会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,则对另一个表发出 SET IDENTITY_INSERT ON 语句时,SQL Server 将返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON,并报告已将其属性设置为 ON 的表。
如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。
SET IDENTITY_INSERT 的设置是在执行或运行时设置的,而不是在分析时设置的。
权限
用户必须拥有表,或对表具有 ALTER 权限。
示例
下面的示例将创建一个包含标识列的表,并说明如何使用 SET IDENTITY_INSERT 设置来填充由 DELETE 语句导致的标识值中的空隙。
代码如下:
USE AdventureWorks2012;
GO
-- Create tool table.
CREATE TABLE dbo.Tool(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR(40) NOT NULL
)
GO
-- Inserting values into products table.
INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
INSERT INTO dbo.Tool(Name) VALUES ('Saw')
INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
GO
-- Create a gap in the identity values.
DELETE dbo.Tool
WHERE Name = 'Saw'
GO
SELECT *
FROM dbo.Tool
GO
-- Try to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO
-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON
GO
-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO
SELECT *
FROM dbo.Tool
GO
-- Drop products table.
DROP TABLE dbo.Tool
GO


猜你喜欢
- Python复合语句复合语句是包含其它语句(语句组)的语句;它们会以某种方式影响或控制所包含其它语句的执行。通常,复合语句会跨越多行,虽然在
- 什么是WaitGroupsWaitGroups是同步你的goroutines的一种有效方式。想象一下,你和你的家人一起驾车旅行。你的父亲在一
- 1. 使用默认的session, 在ini文件中:from pyramid.session import UnencryptedCookie
- 该方法支持IE浏览器和其他浏览器。1、首先定义两个link,当然你也可以是一个,第二个是要更改的css<link rel="
- 什么是命令行交互当我们使用脚手架去创建一个项目的时候,通常会通过命令行交互来获取一些信息:比如填项目名称;选择项目模板;选择版本;需要安装哪
- XPathXPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath使用方
- 本文实例讲述了python计算牛顿迭代多项式的方法。分享给大家供大家参考。具体实现方法如下:''' p = eval
- 本文内容会引起杀毒软件的莫名兴奋,建议先安抚杀毒软件,让杀毒软件先休息一下再继续操作安装python3.6转exe会遇到很多问题,其中部分是
- PHP 301跳转的小代码<?php $the_host = $_SERVER['HTTP
- 1.__new__(cls, *args, **kwargs) 创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是
- 本文实例讲述了mysql外键基本功能与用法。分享给大家供大家参考,具体如下:本文内容:什么是外键外键的增加外键的修改和删除外键的约束模式首发
- Python获取pid和进程名字1、安装psutilpip install psutil如果pip不识别,就进入下载的python目录下面执
- 1. 使用ssh密钥免密远程登录服务器如果你还未曾成功远程登陆过服务器,下面这篇博客或许对你有帮助如果你成功远程登陆过服务器,Let'
- 本文实例为大家分享了python实现简单俄罗斯方块游戏的具体代码,供大家参考,具体内容如下import pygame,sys,random,
- 此文章主要介绍的是MySQL数据库的字符(串)的实际操作步骤,我们大家都知道MySQL数据库的字符(串)在实际操作是经常被用到了,所以你对其
- 一同事反馈有一MySQL实例因为断电之后,启动不了。用了innodb_force_recovery=6也无效,于是前往查看。排查过程:最早的
- 阅读上一篇:打造设计你自己的字体 Ⅱ永远都在寻觅字体设计的灵感。夏天过后,我买了一套便宜的书法钢笔,说服自己,它会让我的鸡爬字产生脱胎换骨的
- 1-删除模型变量del model_define2-清空CUDA cachetorch.cuda.empty_cache()3-步骤2(异步
- 假如您在安装SQL Server 2005时出现计数器错误,在搜索过所有的方法都不适用的情况下可以采用以下方法:将4个计数器删除:(如果没有
- 动态变量名赋值在使用 tkinter 时需要动态生成变量,如动态生成 var1...var10 变量。使用 exec 动态赋值exec 在