【问题标题】:If I have a table with only an auto-increment column, how do I insert into it?如果我有一个只有自动增量列的表,我该如何插入它?
【发布时间】:2010-11-07 03:12:24
【问题描述】:

一位同事问我,如果你在 SQL Server 中有一个表只有一个自增列,你如何在该表中插入一个新行?

INSERT INTO MyTable() VALUES()

...不起作用。

至于为什么...我不太确定。但我发现这个问题很有说服力。

【问题讨论】:

标签: sql-server insert auto-increment


【解决方案1】:
insert into mytable default values

【讨论】:

    【解决方案2】:

    显然这是可行的:

    INSERT INTO MyTable DEFAULT VALUES
    

    (我打了之后才发现。对不起!)

    【讨论】:

      【解决方案3】:

      使用默认值,也适用于默认值

      create table #test (id int identity, Somedate datetime default getdate())
      
      
      insert #test default values
      
      select * from #test
      

      id 某天

      1 2009-06-30 16:04:03.307

      【讨论】:

        【解决方案4】:
        set identity_insert MyTable ON
        
        insert MyTable(MyIdentColumn) values(42)
        
        set identity_insert MyTable OFF
        

        【讨论】:

        • 有趣的方法。如果将 42 替换为计算下一个自动增量值的值,例如 MAX(id) + 1,它可能会更好。
        • 计算 max+1 会破坏将显式值插入标识列的目的。 42 只是作为一个例子——你可以插入你想要插入的任何值。如果您只想要最大值,则根本不会使用我的示例。
        【解决方案5】:

        使用 IDENTITY_INSERT 设置:

        SET IDENTITY_INSERT MyTable ON INSERT INTO MyTable (AutoIncrementColumnName, OtherColumnNames...) 值(9999,其他数据...) SET IDENTITY_INSERT MyTable 关闭

        确保您插入的值不在键中。

        【讨论】:

          猜你喜欢
          • 2011-08-23
          • 1970-01-01
          • 2023-03-22
          • 2013-03-06
          • 1970-01-01
          • 2020-02-09
          • 2016-03-19
          • 1970-01-01
          相关资源
          最近更新 更多