2

我目前有一个有四列的表 - 我想添加第五列但遇到了一些麻烦。

我在 sql server studio management 2008 中打开表,然后添加列信息,如下所示:

CREATE TABLE [dbo].[Case]
(
    CaseId                  UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    CaseNumber              NVARCHAR(50) NOT NULL,
    CourtId                 INT NOT NULL,
    DateOpened              DATETIME NOT NULL,
) 

我的补充:

CREATE TABLE [dbo].[Case]
(
    CaseId                  UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    CaseNumber              NVARCHAR(50) NOT NULL,
    CaseName                NVARCHAR(50),
    CourtId                 INT NOT NULL,
    DateOpened              DATETIME NOT NULL,
)

添加 CaseName 列后,我尝试在 Management Studio 中执行该表,但收到错误消息“数据库中已有一个名为 'Case' 的对象。” 我尝试保存然后构建我的数据库,希望能添加该列,但没有成功。我尝试了一个新查询并编写了 'Alter table "case" add CaseName nvarchar(50) 但再次没有运气。它表明该文件已随新列更改,因为我保存了它,但是在构建了我的整个数据库之后,它没有进行任何更改。任何有用的提示都会很棒。

4

5 回答 5

11

你想ALTER,如下:

ALTER TABLE [dbo].[Case] ADD CaseName NVARCHAR(50)

更好的是,您可以先检查该列的存在:

if not exists (SELECT 1 FROM sysobjects INNER JOIN syscolumns ON 
    sysobjects.id = syscolumns.id 
    WHERE sysobjects.name = N'Case' AND syscolumns.name = N'CaseName')
ALTER TABLE [dbo].[Case] ADD CaseName NVARCHAR(50)
于 2012-10-01T17:44:46.877 回答
1

使用Alter table语句而不是Create

如果Alter由于某种原因无法使语句正常工作,您也可以drop使用现有表和create带有新字段的新表,但所有现有行都将丢失。

如果您使用的是 SSMS,则可以Design使用表而不是Edit添加列。

于 2012-10-01T17:42:03.550 回答
1

你应该试试这个

 ALTER TABLE [dbo].[Case]

    ADD CaseName NVARCHAR(50)

您正在尝试创建另一个表Case,但一个已经存在,这就是您遇到错误的原因。当你想编辑一个表时,你必须使用Alter table

于 2012-10-01T17:45:47.517 回答
0

ALTER是你需要调查的 ( F1)

另一种选择是。
创建一个新表

CREATE TABLE [dbo].[Case2]
(
    CaseId                  UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    CaseNumber              NVARCHAR(50) NOT NULL,
    CourtId                 INT NOT NULL,
    DateOpened              DATETIME NOT NULL,
newcolumn               INT NULL    
) 

将现有表中的数据移动到新表中

INSERT INTO [dbo].[Case2]
SELECT * FROM [dbo].[Case]

然后

DROP TABLE [dbo].[Case]

然后在管理工作室中右键单击“Case2”并将其重命名为“Case”

于 2012-10-01T19:50:24.860 回答
0

我建议在添加之前检查列是否存在,这在使用迁移脚本时尤其重要。

以下是我通常的做法:

IF NOT EXISTS(SELECT * FROM sys.columns  WHERE Name = N'ColumnName' AND Object_ID = Object_ID(N'TableName'))
BEGIN
    ALTER TABLE [dbo].TableName ADD ColumnName NVARCHAR(512) null
END
于 2016-01-13T12:01:16.833 回答