代码之家  ›  专栏  ›  技术社区  ›  Pierre de LESPINAY

MSSql-隐式和显式标识INSERT

  •  0
  • Pierre de LESPINAY  · 技术社区  · 11 年前

    问题是:

    是否有一种方法可以同时指定隐式&同一个中的显式标识 INSERT ?

    INSERT INTO target (id, name)
    VALUES
      (1, 'machin')
    , (2, 'chouette')
    , (3, 'trutruc')
    , (NULL, 'chouchouette')
    , (NULL, 'chose')
    ;
    

    还是我必须提出两个不同的问题?

    请结账 my fiddle


    上下文:我向用户展示了该列表的内联编辑器,用户可以在其中创建/更新/删除值。当他提交时,我正在替换这些值。由于这些值与其他对象相关,我正在尽可能保留它们的id。

    2 回复  |  直到 11 年前
        1
  •  2
  •   Damien_The_Unbeliever    11 年前

    不,您必须使用单独的查询。甚至插入到 IDENTITY 纵队,你必须转身 IDENTITY_INSERT ON -此时,您告诉服务器“相信我,我会提供适当的值”。

    我尝试构造一个查询 IDENT_CURRENT 并计算了您的身份值 NULL 但无法保证 标识_当前 因此很难产生与服务器在正常情况下产生的结果相同的结果。

        2
  •  0
  •   TomTom    11 年前

    当他提交时,我正在替换这些值。

    这被称为严重的编程错误。

    问题是Identity是一个标识,如果您删除/插入而不是更新,则确保永远不能使用引用完整性。s RI是拥有良好数据的核心基础——这种方法非常有生产力。

    这里的主要问题不是“插入特定值”,而是“为什么要插入而不是更新”。