我目前有一个包含四列的表格 - 我想添加第五列但有些麻烦。
我在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'案例“添加CaseName nvarchar(50)但又没有运气。它显示该文件是使用新列更改的,因为我保存了它但在构建我的整个数据库之后它没有进行任何更改。任何有用的提示都会很棒。
答案 0 :(得分:8)
您想要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)
答案 1 :(得分:1)
使用Alter table
语句代替Create
如果由于某种原因导致Alter
声明无效,您还可以drop
现有表格,create
新字段与新字段,但所有你的现有的行将丢失。
如果您使用的是SSMS,则可以Design
使用表格而不是Edit
来添加列。
答案 2 :(得分:0)
你应该试试这个
ALTER TABLE [dbo].[Case]
ADD CaseName NVARCHAR(50)
您正在尝试创建另一个表Case
,但已存在一个表,这就是您遇到错误的原因。如果要编辑表格,则必须使用Alter table
答案 3 :(得分: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”
答案 4 :(得分: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