首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL更新/更改或插入?

SQL更新/更改或插入?
EN

Stack Overflow用户
提问于 2016-10-10 12:59:07
回答 4查看 58关注 0票数 0

我创建了一个名为Company的数据库和一个名为EmployeesTD的表,忘记向我的EmployeeID行添加自动增量,如何更新我的表以添加自动增量

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-10 13:04:58

1)创建具有临时名称和自动增量字段的新表

2)将旧表中的所有数据移动到新表(使用identity_insert)

3)放下那张旧桌子

4)将新表重命名为原来的名称

(如果有索引,请不要忘记添加索引。如果为了避免不必要的索引重建,请在后面添加它们。)

票数 0
EN

Stack Overflow用户

发布于 2016-10-10 13:07:33

代码语言:javascript
运行
复制
alter table t1
add somename int identity(1,1)

否则

代码语言:javascript
运行
复制
create table dummytable 
(
id int identity(1,1)
somecols --

)

insert into dummytable
select colnames from orginaltable

最后,添加索引并将虚拟重命名为原始

如果表有大量数据,我将采用第二种方法,因为第一次操作可能会完全锁定表。

票数 0
EN

Stack Overflow用户

发布于 2016-10-10 13:08:24

只需运行此ALTER TABLE查询即可。

代码语言:javascript
运行
复制
ALTER TABLE EmployeesTD ADD id INT IDENTITY(1,1)

即使您在EmployeesTD表中有记录,上面的语句也会为每一行填充唯一的值。

使用Identity函数的另一种方法

代码语言:javascript
运行
复制
-- 1. create a temporary table 
SELECT IDENTITY(int, 1, 1) AS id,
       *
INTO   temp_EmployeesTD
FROM   EmployeesTD

-- 2. drop the orginal table
DROP TABLE EmployeesTD

-- 3. rename the temporary table to orginal table
EXEC Sp_rename
  'temp_EmployeesTD',
  'EmployeesTD' 

-- 4. Recreate the indexes if any
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39958878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档