生成序列号

Generating sequence numbers

我有table个

ID
---
None
1
3
4
8

我有table B

ID      number
---------------
None    None
 1      300
 3      301
 4      302
 8      303

如果 table A 中有任何新值,我如何通过保持 table B 静态来获取 B.number 列中的值“304”、“305”....n (即保持 table B 中的旧值不变)

正如您提出的问题,这应该可行。但这是一件需要做的奇怪事情,因此最好提供较少的关于需求的抽象细节。

INSERT INTO table_b
    SELECT a.id,
           ( SELECT MAX(number)
               FROM table_b
           ) + ROW_NUMBER() OVER ( PARTITION BY 1 ORDER BY a.id) number
      FROM table_a a
     WHERE NOT EXISTS
             ( SELECT 1
                 FROM table_b b
                WHERE a.id = b.id
             );