zey*_*zey 11 sql-server sql-server-2008-r2
我在SQL Server中创建了一个表,如下所示:
CREATE TABLE [UserName]
(
[ID] [int] NOT NULL ,
[Name] [nvarchar] (50) NOT NULL ,
[Address] [nvarchar] (200) NULL
CONSTRAINT [PK_UserName] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
如果我想创建ID一个标识列,我需要什么?我是否需要删除并创建此表并设置ID为[ID] [int] IDENTITY(1,1) NOT NULL.
通过使用drop和create,UserName表中的所有数据都将丢失.
有另一种方式来设置IDENTITY COLUMN,以创建表的列,而不会丢失数据?
我使用的是SQL Server 2008 R2 :)
a_h*_*ame 14
ALTER TABLE [UserName] DROP COLUMN [ID];
ALTER TABLE [UserName]
ADD [ID] integer identity not null;
Run Code Online (Sandbox Code Playgroud)
试试这个-
DECLARE @temp TABLE
(
ID INT NOT NULL
, Name NVARCHAR(50) NOT NULL
, [Address] NVARCHAR(200) NULL
)
INSERT INTO @temp (ID, Name, [Address])
SELECT ID, Name, [Address]
FROM dbo.UserName
DROP TABLE dbo.UserName
CREATE TABLE dbo.UserName
(
[ID] [int] IDENTITY(1,1) NOT NULL
, [Name] [nvarchar] (50) NOT NULL
, [Address] [nvarchar] (200) NULL
CONSTRAINT [PK_UserName] PRIMARY KEY CLUSTERED
([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
SET IDENTITY_INSERT dbo.UserName ON
INSERT INTO dbo.UserName (ID, Name, [Address])
SELECT ID, Name, [Address]
FROM @temp
SET IDENTITY_INSERT dbo.UserName OFF
Run Code Online (Sandbox Code Playgroud)
最简单的方法:
希望这可以帮助