如何用语句添加或去除表字段的自增属性
问题点数:50、回复次数:16
Top
1 楼pengdali()回复于 2003-09-03 08:53:53 得分 20去标识
alter table tablename add id1 int
update tablename set id1=id
alter table tablename drop column id
exec sp_rename 'tablename.id1','id'
Top
2 楼pengdali()回复于 2003-09-03 08:54:24 得分 0 加标识
有数据的话
ALTER TABLE 表 ADD 编号1 bigint identity(1,1) not null
go
SET IDENTITY_INSERT 表 ON
go
update 表 set 编号1=编号
go
SET IDENTITY_INSERT 表 OFF
go
ALTER TABLE 表 DROP COLUMN 编号
go
exec sp_rename '表.编号1','编号'
go
Top
3 楼txlicenhe(马可)回复于 2003-09-03 08:58:44 得分 101:alter table yourTable add idd int
update yourTable set idd = id
alter table yourTable drop column id
sp_rename 'yourTable.[idd]','id',COLUMN
Top
4 楼tiny_yan(自由裸体)回复于 2003-09-03 08:59:32 得分 10添加表字段的自增属性
create table test1 (id int,cc varchar(2))
go
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_test1
(
id int NOT NULL IDENTITY (1, 1),
cc varchar(2) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_test1 ON
GO
IF EXISTS(SELECT * FROM dbo.test1)
EXEC('INSERT INTO dbo.Tmp_test1 (id, cc)
SELECT id, cc FROM dbo.test1 TABLOCKX')
GO
SET IDENTITY_INSERT dbo.Tmp_test1 OFF
GO
DROP TABLE dbo.test1
GO
EXECUTE sp_rename N'dbo.Tmp_test1', N'test1', 'OBJECT'
GO
COMMIT
Top
5 楼txlicenhe(马可)回复于 2003-09-03 08:59:37 得分 0 2: alter table yourTable add id int identity(1,1)
Top
6 楼tiny_yan(自由裸体)回复于 2003-09-03 09:01:40 得分 10去除表字段的自增属性
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_test1
(
id int NOT NULL,
cc varchar(2) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.test1)
EXEC('INSERT INTO dbo.Tmp_test1 (id, cc)
SELECT id, cc FROM dbo.test1 TABLOCKX')
GO
DROP TABLE dbo.test1
GO
EXECUTE sp_rename N'dbo.Tmp_test1', N'test1', 'OBJECT'
GO
COMMIT
Top
7 楼tiny_yan(自由裸体)回复于 2003-09-03 09:18:00 得分 0 我的两个方法是SQL server企业管理器的做法,如果表中已有大量数据,耗时太多。
不知pengdali(大力 V2.0)用alter table的方法效率如何?
Top
8 楼friendliu(无为)回复于 2003-09-03 09:29:01 得分 0 alter table tablename add test int identity(1,1) not null
Top
9 楼cloudchen(cloudchen)回复于 2003-09-03 10:15:45 得分 0 先加一个字段,然后把原先的id复制到新的字段中,删除原来的id,再把新的更名为id
就是大力的做法!我就是学大力的!
Top
10 楼zarge(鲨去来兮)回复于 2003-09-03 10:28:58 得分 0 企业管理器的做法是把数据拷贝到临时表,重建表,然后把数据拷回来
可能效率要低些
Top
11 楼st_2000(破猫)回复于 2003-11-07 16:10:50 得分 0 标识
有数据的话
ALTER TABLE 表 ADD 编号1 bigint identity(1,1) not null
go
SET IDENTITY_INSERT 表 ON
go
update 表 set 编号1=编号
go
SET IDENTITY_INSERT 表 OFF
go
ALTER TABLE 表 DROP COLUMN 编号
go
exec sp_rename '表.编号1','编号'
|