我正在使用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]);
答案 0 :(得分:3)
您要执行的操作是为表创建一个计算列,该记录可能会在插入,删除或更新记录时更改许多其他记录。考虑到对性能的重大影响,我认为任何SQL引擎都不会允许这样做。
我建议创建一个视图,该视图具有要查找的行号列,然后像表一样引用该视图。在这种情况下,只要引用该视图,它就会被动态计算。