在我的SQL Server 2005实例中的数据库中,我需要向一个已有数据的表格中添加一列。当前这个表格看起来像这样:
CREATE TABLE [dbo].[Status](
[Status_ID] [int] IDENTITY(1,1) NOT NULL,
[Description] [nvarchar](80) COLLATE Latin1_General_CI_AS NOT NULL
)
我想要添加的列也是INT类型,不允许为空。此外,我希望这个列的初始值等于ID(它不能是计算列)。
以下是我编写的脚本:
ALTER TABLE [dbo].[Status]
add Status_Code int NOT NULL DEFAULT 1
GO
//Get the number of rows
DECLARE @RowCount INT
SET @RowCount = (SELECT COUNT(Status_ID) FROM Status)
//Create an iterator
DECLARE @I INT
SET @I = 1
//Loop through the rows of a table @myTable
WHILE (@I <= @RowCount)
BEGIN
UPDATE Status
SET Status_Code = @I
WHERE Status_ID = @I
//Increment the iterator
SET @I = @I + 1
END
这个脚本似乎完美地工作了。然而,对于一个相对较小的任务来说,它的代码量似乎有些多。是否有更有效率的编码方式可供选择?