作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。
我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?
作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。
我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?
当前回答
当我们在现有表中添加一个标识列时,它将自动填充,而不需要手动填充。
其他回答
这里有一个你可以尝试的主意。 原始表-没有标识列table1 创建一个新的表-调用表2和标识列。 将数据从table1复制到table2 -标识列自动填充自动递增的数字。
将原表table1重命名为table3 将新表- table2重命名为table1(原始表) 现在已经有了包含标识列的表1,并为现有数据填充了标识列。 在确保没有问题并且工作正常后,在不再需要时删除表3。
试着这样做(先在测试台上):
USE your_database_name GO WHILE (SELECT COUNT(*) FROM your_table WHERE your_id_field IS NULL) > 0 BEGIN SET ROWCOUNT 1 UPDATE your_table SET your_id_field = MAX(your_id_field)+1 END PRINT 'ALL DONE'
我根本没有测试过这个,所以要小心!
这在MariaDB中工作,所以我只能希望它在SQL Server中做到:删除刚刚插入的ID列,然后使用以下语法
增加表的主键
不需要另一张桌子了。这只是插入一个id列,使其成为主索引,并用顺序值填充它。如果SQL Server不这样做,我很抱歉浪费了你的时间。
修改表table_name,增加列ID 这可能很有用
ALTER TABLE table_name ADD temp_col INT IDENTITY(1,1)
update