sql server如何给一个表添加一个主键然后让它自动填充?
就是说这张表本来是没有主键的然后我希望加个id然后让它自动1,2,3,4,5...这样填充下去应该怎么做?...
就是说这张表本来是没有主键的
然后我希望加个id
然后让它自动1,2,3,4,5...这样填充下去
应该怎么做? 展开
然后我希望加个id
然后让它自动1,2,3,4,5...这样填充下去
应该怎么做? 展开
4个回答
展开全部
假设原表结构如下:
create table ttt
(
t1 int,
t2 varchar(
)
现在想把字段t1设为自增字段和主键.
CREATE TABLE dbo.Tmp_ttt
(
t1 int NOT NULL IDENTITY (1, 1),
t2 varchar( NULL
)
go
SET IDENTITY_INSERT dbo.Tmp_ttt ON
go
IF EXISTS(SELECT * FROM dbo.ttt)
EXEC(\'INSERT INTO dbo.Tmp_ttt (t1, t2)
SELECT t1, t2 FROM dbo.ttt TABLOCKX\')
go
SET IDENTITY_INSERT dbo.Tmp_ttt OFF
go
DROP TABLE dbo.ttt
go
EXECUTE sp_rename N\'dbo.Tmp_ttt\', N\'ttt\', \'OBJECT\'
go
ALTER TABLE dbo.ttt ADD CONSTRAINT
PK_ttt PRIMARY KEY CLUSTERED
(
t1
) ON [PRIMARY]
COMMIT
为什麼不用
alter table ttt drop column t1
go
alter table ttt add t1 identity(1,1) not null
go
alter table ttt add constrain primary key pk_t (t1)
的方法.
是因为先删掉一列.再增加一列.
那麼列的顺序就改变了.
有可能带来意想不到的问题.
(比方说,你的程序中有个insert语句是没有写字段名的)
create table ttt
(
t1 int,
t2 varchar(
)
现在想把字段t1设为自增字段和主键.
CREATE TABLE dbo.Tmp_ttt
(
t1 int NOT NULL IDENTITY (1, 1),
t2 varchar( NULL
)
go
SET IDENTITY_INSERT dbo.Tmp_ttt ON
go
IF EXISTS(SELECT * FROM dbo.ttt)
EXEC(\'INSERT INTO dbo.Tmp_ttt (t1, t2)
SELECT t1, t2 FROM dbo.ttt TABLOCKX\')
go
SET IDENTITY_INSERT dbo.Tmp_ttt OFF
go
DROP TABLE dbo.ttt
go
EXECUTE sp_rename N\'dbo.Tmp_ttt\', N\'ttt\', \'OBJECT\'
go
ALTER TABLE dbo.ttt ADD CONSTRAINT
PK_ttt PRIMARY KEY CLUSTERED
(
t1
) ON [PRIMARY]
COMMIT
为什麼不用
alter table ttt drop column t1
go
alter table ttt add t1 identity(1,1) not null
go
alter table ttt add constrain primary key pk_t (t1)
的方法.
是因为先删掉一列.再增加一列.
那麼列的顺序就改变了.
有可能带来意想不到的问题.
(比方说,你的程序中有个insert语句是没有写字段名的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加个列名,比如叫id,类型选择int 下面的标识选择 是
标识种子 1 标识递增量 1 然后把本列指定为主键..就OK了.
标识种子 1 标识递增量 1 然后把本列指定为主键..就OK了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql = "CREATE TABLE " + tbName
+ "(Id int primary key identity(1,1)";
+ "(Id int primary key identity(1,1)";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询