【问题标题】:insert auto incrementing column value/id [duplicate]插入自动递增的列值/ID [重复]
【发布时间】:2020-06-18 21:27:19
【问题描述】:

我需要一个自动递增的 id,当它每隔几秒插入到表中时,我在下面的代码中没有。

当前 id 列为空。

有什么想法吗?

INSERT INTO [display].[dbo].[data1] (position, action, sync)
    SELECT
        CAST(RAND() * 3 AS INT) + 1, 
        CASE CAST(RAND() * 8 AS INT) 
            WHEN 0 THEN 'Weighlifting'
            WHEN 1 THEN 'Shoutout'
            WHEN 2 THEN 'dumbbells'
            WHEN 3 THEN 'facewipe'
            WHEN 4 THEN 'pacman'
            WHEN 5 THEN 'shootingstar'
            WHEN 6 THEN 'tornado'
            WHEN 7 THEN 'muscle' 
         END,
         CAST(RAND() * 4 AS INT)
         WAITFOR DELAY '00:00:01.500'
GO 3000

之前:

id  position        action     sync
-----------------------------------
NULL    3           facewipe    2         
NULL    1           tornado     1         
NULL    1           tornado     3         
NULL    1           Shoutout    3         
NULL    2           NULL        0         
NULL    1           dumbbells   2         
NULL    2           Shoutout    2     

预期表:

id  position        action    sync
-----------------------------------
1     3             facewipe    2         
2     1             tornado     1         
3     1             tornado     3         
4     1             Shoutout    3         
5     2             NULL        0         
6     1             dumbbells   2         
7     2             Shoutout    2     

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    将数据类型声明为id列的IDENTITY。

    ALTER TABLE dbo.YourTable DROP COLUMN ID;
    ALTER TABLE dbo.YourTable ADD ID INT IDENTITY;
    

    这将为现有行添加增量号。

    更新现有行的替代方法:

    DECLARE @id INT
    SET @id = 0 
    UPDATE table SET @id = id = @id + 1 
    

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2011-08-20
      • 2013-04-12
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多