`
YTWY001
  • 浏览: 30264 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

当IDENTITY_INSERT设置为OFF时

阅读更多

问题:当IDENTITY_INSERT设置为OFF时,不能向表'教师'中的标识列id插入显式值。?????

解决方法:

在要插入的语句前加入“SET IDENTITY_INSERT 表名 ON

GO”即可解决


SET IDENTITY_INSERT允许将显式值插入表的标识列中。  
语法  
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }  
参数  
database  
是指定的表所驻留的数据库名称。  
owner  
是表所有者的名称。  
table  
是含有标识列的表名。  
注释  
任何时候,会话中只有一个表的IDENTITY_INSERT属性可以设置为ON。如果某个表已将此属性设置为ON,并且为另一个表发出了SET IDENTITY_INSERT ON语句,则Microsoft® SQL Server™返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为ON并报告此属性已设置为 ON 的表。  
   
如果插入值大于表的当前标识值,则 SQLServer 自动将新插入值作为当前标识值使用。  
   
SET IDENTITY_INSERT的设置是在执行或运行时设置,而不是在分析时设置。  
   
权限  
执行权限默认授予sysadmin固定服务器角色和db_owner及db_ddladmin固定数据库角色以

及对象所有者。  
   
示例  
下例创建一个含有标识列的表,并显示如何使用 SET IDENTITY_INSERT 设置填充由DELETE语句导致的标识值中的空隙。  
   

--   Create   products   table.  
CREATE   TABLE   products   (id   int   IDENTITY   PRIMARY   KEY,   product   varchar(40))  
GO  
--   Inserting   values   into   products   table.  
INSERT   INTO   products   (product)   VALUES   ('screwdriver')  
INSERT   INTO   products   (product)   VALUES   ('hammer')  
INSERT   INTO   products   (product)   VALUES   ('saw')  
INSERT   INTO   products   (product)   VALUES   ('shovel')  
GO  
   
--   Create   a   gap   in   the   identity   values.  
DELETE   products    
WHERE   product   =   'saw'  
GO  
   
SELECT   *    
FROM   products  
GO  
   
--   Attempt   to   insert   an   explicit   ID   value   of   3;  
--   should   return   a   warning.  
INSERT   INTO   products   (id,   product)   VALUES(3,   'garden   shovel')  
GO  
--   SET   IDENTITY_INSERT   to   ON.  
SET   IDENTITY_INSERT   products   ON  
GO  
   
--   Attempt   to   insert   an   explicit   ID   value   of   3  
INSERT   INTO   products   (id,   product)   VALUES(3,   'garden   shovel').  
GO  
   
SELECT   *    
FROM   products  
GO  
--   Drop   products   table.  
DROP   TABLE   products  
GO

 

 

分享到:
评论

相关推荐

    SQL Server 之 SET IDENTITY_INSERT

    `SET IDENTITY_INSERT`允许我们在插入数据时显式地为标识列指定一个具体的值。这在需要控制数据插入顺序或需要在标识列中插入非连续值时非常有用。例如,如果需要在表中插入一条记录,并且希望这条记录的标识列值为...

    Set IDENTITY _INSERTY用法

    **结果分析:** 当 `IDENTITY_INSERT` 设置为 `ON` 时,可以通过这种方式批量插入包含 `IDENTITY` 值的记录。 ##### 示例六:指定字段进行批量插入 如果只想插入特定字段的值,可以进一步指定字段列表: ```sql ...

    sql Set IDENTITY_INSERT的用法

    1. 当 `IDENTITY_INSERT` 设置为 `ON` 时,不能在同一会话中对同一表再次执行 `SET IDENTITY_INSERT ON`。 2. 如果尝试插入的值已经存在于标识列中,或者超过了该列的最大值,插入操作将失败。 3. 在数据迁移后,...

    230211-036shopDemo(Code-First自增型编号插入异常解决方案)

     //如果不包含上述定义,在通过SQL命令插入包含编号值的数据时会出现“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Address' 中的标识列插入显式值。”异常。  //注意:  // 如果在Code-First模式下的编号...

    sqlserver自动增长列引起的问题解决方法

    错误提示"仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'*'中的标识列指定显式值"表明,系统不允许直接对具有自动增长属性的列插入显式值。这是SQL Server的一个安全机制,以防止意外覆盖自动增长序列。...

    sqlsever为标识列指定显式值

    标题和描述中提到的问题是,在尝试为SQL Server表中的标识列插入显式值时,系统返回错误提示:“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'*'中的标识列指定显式值”。这个错误意味着我们在没有开启...

    SQL Server手工插入标识列的方法

    则在查询分析器里面会返回错误信息: [plain] 引用内容 服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_Insert 设置为 OFF 时,不能向表 ‘member’ 中的标识列插入显式值。 有的情况我们需要手动插入标识...

    SpringMVCDemo:步骤1

    SpringMVCDemoThis is just a demo for learningIntelliJ IDEAJDKtomcatSQLServer 2017.2 |...报错:“ 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'user' 中的标识列插入显式值 ”(在 BlogEntity.java 中也是一样)

    在SQL Server数据库中为标识(IDENTITY)列插入显式值

    而在ASP程序中会返回错误信息: 引用内容 Microsoft OLE DB Provider for SQL Server 错误 ‘80040e14’ 当 IDENTITY_Insert 设置为 OFF 时,不能向表 ‘member’ 中的标识列插入显式值。

    identity用法总结

    语法为:SET IDENTITY_INSERT [database.[ owner.]] {table } { ON |OFF },其中 database 是指定的表所驻留的数据库名称,owner 是表所有者的名称,table 是含有标识列的表名。 3、DBCC CHECKIDENT DBCC ...

    Insert语句向标识列中插入数据.pdf

    Set Identity_Insert identitytable off ``` 参考文献中提到的书籍可以进一步提供关于SQL Server 2008以及数据库管理的深入知识。通过这些资源,读者可以更全面地了解SQL语句和标识列的使用,包括其他可能遇到的...

    如何在数据库标识列里插入特定的值

    但要注意,一旦 `IDENTITY_INSERT` 设置为 `ON`,如果尝试插入已经存在的主键值,仍然会导致错误。因此,确保插入的值在表中是唯一的非常重要。 在实际应用中,填充标识列的空缺可能涉及到复杂的业务逻辑,例如恢复...

    解决sqlserver 2012 中ID 自动增长 1000的问题.zip

    5. **修正表结构**:如果是因为创建表时设置错误,可以修改表结构来修复。 ```sql ALTER TABLE YourTableName ALTER COLUMN YourIdentityColumn INT IDENTITY(1,1); ``` 三、预防措施 1. 在进行数据库恢复操作时...

    计算机等考三级数据库知识辅导:自动排除计算字段拷贝表数据.docx

    这通过`set identity_insert @tableName off`语句完成。 这个存储过程在数据库管理中非常实用,特别是在处理大量数据迁移或备份时,能够确保只拷贝必要的非计算字段,避免了计算字段数据的错误或冗余。同时,对于带...

    sqlserver自动增长字段设置方法.rar

    SET IDENTITY_INSERT Employees OFF; ``` - **重置自动增长**:如果自动增长值丢失或需要重新开始,可以使用`DBCC CHECKIDENT`: ```sql DBCC CHECKIDENT ('Employees', RESEED, 0); -- 将自动增长值重置为...

    导出insert语句的存储过程sql脚本

    print 'SET IDENTITY_INSERT ' + @TableName + ' OFF' ``` ### 总结 该存储过程提供了一种简单有效的方法来将现有表中的数据转换成INSERT语句。这对于备份数据、恢复数据或迁移数据库等场景都非常有用。此外,它...

    sqlserver导出insert语句的存储过程

    如果表中有标识列(Identity Column),则首先设置 `IDENTITY_INSERT` 为 ON。 ```sql SELECT @ident = status & 0x80 FROM syscolumns WHERE id = @objectID AND status & 0x80 = 0x80; IF @ident IS NOT NULL...

Global site tag (gtag.js) - Google Analytics