事實上SQL Server 內部是這樣做的︰
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
COMMIT
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_t1
(
x1 char(5) NOT NULL,
x2 varchar(50) NULL,
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.t1)
EXEC('INSERT INTO dbo.Tmp_t1(x1, x2)
SELECT x1, x2 FROM dbo.t1 TABLOCKX')
GO
DROP TABLE dbo.t1
GO
EXECUTE sp_rename 'dbo.Tmp_t1', 't1'
GO
ALTER TABLE dbo.t1 ADD CONSTRAINT
PK_t1 PRIMARY KEY NONCLUSTERED
(
x1
) ON [PRIMARY]
GO
COMMIT
在企业管理器中也可直接修改,我测试过个,不管它是什么键,统统没问题,不用说改大,改小都行,-----除非是日文版有问题,
如果真的是不行那你可以安下面的步骤:
1。先加一个字段为tmpfld为varchar(6)
2.update tbl set tmpfld=originalfld
3.delete originalfld(first remove the primary key property)
4.rename the tmpfld to originalfld
5.if success then add score to me ^..^