zoukankan      html  css  js  c++  java
  • 仅当使用了列的列表 并且 identity_insert 为 on 时 才能在表 中为标识列指定显式值

    当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'products' 中的标识列插入显式值。”

    示例:

    1.首先建立一个有标识列的表:
    CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))

    2.尝试在表中做以下操作:
    INSERT INTO products (id, product) VALUES(3, 'garden shovel')

    结果会导致错误:“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'products' 中的标识列插入显式值。”

    3.改用:
    SET IDENTITY_INSERT products ON
    INSERT INTO products (id, product) VALUES(1, 'garden shovel')

    返回正确。

    4.建立另外一个表products2,尝试相同插入操作:
    CREATE TABLE products2 (id int IDENTITY PRIMARY KEY, product varchar(40))

    然后执行:
    SET IDENTITY_INSERT products2 ON
    INSERT INTO products2 (id, product) VALUES(1, 'garden shovel')

    导致错误:“表 'material.dbo.products' 的 IDENTITY_INSERT 已经为 ON。无法对表 'products2' 执行 SET 操作。”

    改为执行:
    SET IDENTITY_INSERT products OFF
    SET IDENTITY_INSERT products2 ON
    INSERT INTO products2 (id, product) VALUES(2, 'garden shovel')

    执行通过。

    5.尝试以下操作:
    SET IDENTITY_INSERT products2 ON
    INSERT INTO products2     SELECT * FROM products

    导致错误:“仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'products2' 中为标识列指定显式值。”

    6.改为:
    SET IDENTITY_INSERT products2 ON
    INSERT INTO products2     (id, product)     SELECT * FROM products

    执行通过。

    总结:

    1.每一次连接会话中的任一时刻,只能对一个表设置IDENTITY_INSERT ON,且设置只对当前会话有效;
    2.在对标识列执行插入操作进,一定要列出此标识列(当然,同时也就需要列出相关的其他列了)。

  • 相关阅读:
    PAT 甲级 1132 Cut Integer (20 分)
    AcWing 7.混合背包问题
    AcWing 9. 分组背包问题
    AcWing 5. 多重背包问题 II
    AcWing 3. 完全背包问题
    AcWing 4. 多重背包问题
    AcWing 2. 01背包问题
    AcWing 875. 快速幂
    AcWing 874. 筛法求欧拉函数
    AcWing 873. 欧拉函数
  • 原文地址:https://www.cnblogs.com/roboot/p/4821312.html
Copyright © 2011-2022 走看看