如何将Row_Number计算列添加到现有表

时间:2019-03-05 17:37:30

标签: sql-server partitioning calculated-columns row-number identity-column

我正在使用SSMS 17.4。我需要添加一个使用Row_Number()函数的新列。但是该语法似乎无效

我尝试了三种不同的方法,但是都没有解决。

ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL AS (ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]));

ALTER TABLE MYDB.[dbo].[Table1]
ADD ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]) INT NOT NULL AS Rn;


ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);

我也在此链接上尝试了以下建议

https://ss64.com/sql/table_a_computed.html

   ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ADD Rn AS ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);

1 个答案:

答案 0 :(得分:3)

您要执行的操作是为表创建一个计算列,该记录可能会在插入,删除或更新记录时更改许多其他记录。考虑到对性能的重大影响,我认为任何SQL引擎都不会允许这样做。

我建议创建一个视图,该视图具有要查找的行号列,然后像表一样引用该视图。在这种情况下,只要引用该视图,它就会被动态计算。