• SET IDENTITY_INSERT的用法,具体去体验一下


    如果将值插入到表的标识列中,需要启用 SET IDENTITY_INSERT。

    举例如下:

    创建表Orders、Products,Orders表与Products表分别有标识列OrderID与ProductID:

    --表Orders,Products
    CREATE TABLE Orders(
    OrderID    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    PriceDate DateTime
    )
    
    CREATE TABLE Products(
    ProductID    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    PriceDate Datetime
    )

    当我们用如下插入语句往Orders表中插入数据:

    INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())

    执行此语句后,会出现如下错误:

    把插入语句做如下修改:

    SET IDENTITY_INSERT Orders ON
    INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())

    此时执行成功;

    我们在向Products表做如上插入:

    SET IDENTITY_INSERT Products ON
    INSERT INTO Products (ProductID,PriceDate ) VALUES(1,GETDATE())

    产生如下错误:

    我们对sql做如下修改后,products表插入数据成功

    --修改后的sql
    SET IDENTITY_INSERT Orders ON
    INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())
    SET IDENTITY_INSERT Orders OFF
    
    SET IDENTITY_INSERT Products ON
    INSERT INTO Products (ProductID,PriceDate ) VALUES(1,GETDATE())
    SET IDENTITY_INSERT Products OFF

    可以看到当我们对表的Identity_Insert 的启用与关闭时成对出现,即

    SET IDENTITY_INSERT Products ON
    --Code
    SET IDENTITY_INSERT Products OFF

    如果我们用下面的语句往Products表中插入数据

    SET IDENTITY_INSERT Products ON
    INSERT INTO Products SELECT * FROM Orders
    SET IDENTITY_INSERT Products OFF

    出现如下错误:

    修改上面t-sql语句:

    SET IDENTITY_INSERT Products ON
    INSERT INTO Products(ProductID,PriceDate) SELECT * FROM Orders
    SET IDENTITY_INSERT Products OFF

    可以知道如果对标识列进行插入,那么需要显示的列出标识列

    怀揣着一点点梦想的年轻人
    相信技术和创新的力量
    喜欢快速反应的工作节奏
  • 相关阅读:
    Linux-Deepin下搭建云笔记
    MySQL-脏页的刷新机制
    网络编程-Netty-writeAndFlush方法原理分析 以及 close以后是否还能写入数据?
    MySQL-SQL调优-引擎选错索引或者不使用索引分析 和 字符串加索引的方式思考
    字体的一些属性
    css清除浮动大全,共8种方法
    WEB前端开发人员须知的常见浏览器兼容问题及解决技巧
    区别各种IE浏览器和火狐的css写法
    IE和火狐浏览器对css解析的不一致
    使用photowap插件
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/4800294.html
Copyright © 2020-2023  润新知