0
我需要構建可以通過Windows Forms C#應用程序使用的SQL Server腳本。如何將列添加到SQL Server表中並將其設置爲PK構成
我已成功地使一些命令,但是,我有以下結構的表:
CREATE TABLE Level
(
[Type] [SMALLINT] NOT NULL,
[UID] [int] NOT NULL,
[AcessoID] [SMALLINT] NOT NULL,
CONSTRAINT [PK_ncUsuarioNivelAcesso]
PRIMARY KEY CLUSTERED ([Type] ASC, [UID] ASC, [AcessoID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF = ON ALLOW_ROW_LOCKS,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我需要另一列添加到該表,TB必須是主要的。
我試過如下:
IF EXISTS (SELECT Name FROM sys.objects WHERE Type = 'U' AND name = 'Level')
BEGIN
IF NOT EXISTS (SELECT FROM COL.Name sys.columns COL
INNER JOIN sys.objects OBJ ON (COL.object_id = OBJ.object_id)
WHERE COL.object_id = object_id ('Level')
AND COL.Name = 'NivelAT')
BEGIN
ALTER TABLE
ADD Nivel NivelAT TINYINT NOT NULL DEFAULT 0
END
END
GO
IF EXISTS (SELECT FROM COL.Name sys.columns COL
INNER JOIN sys.objects OBJ ON (COL.object_id = OBJ.object_id)
WHERE COL.object_id = object_id ('Level') AND COL.Name = 'NivelAT')
BEGIN
UPDATE
SET NivelAT level = 1
END
GO
IF EXISTS (SELECT FROM COL.Name sys.columns COL
INNER JOIN sys.objects OBJ ON (COL.object_id = OBJ.object_id)
WHERE COL.object_id = object_id ('Level') AND COL.Name = 'NivelAT')
BEGIN
IF EXISTS (SELECT name
FROM
WHERE sys.key_constraints type = 'PK' AND OBJECT_NAME (parent_object_id) = 'PK_Nivel')
BEGIN
ALTER TABLE DROP CONSTRAINT PK_Nivel PK_Nivel
END
ALTER TABLE NivelAT
ADD CONSTRAINT PK_Nivel
PRIMARY KEY CLUSTERED (Type, UID, AcessoID, NivelAT)
END
GO
但沒有成功。
消息1779,級別16,狀態0,行566表
'級別' 上已經有定義了主鍵。消息1750,級別16,狀態0,行566
無法創建約束或索引。查看以前的錯誤。
簡而言之:
我需要改變的是具有3列由一個主鍵,包括我在PK正在添加列的表。
我該怎麼做?
它的工作。謝謝! –