-2

我有一个带有数据库的应用程序,它们运行良好,一切都很好。

现在,我只需要通过添加更多列来修改数据库中的一个表。我正在使用 SQL Server,数据库管理员要求我向他提供修改该表的脚本。

那么该怎么做呢?

我正在使用 SQL Server Management Studio,当我单击表右键单击时,我曾经选择要创建的脚本,Management Studio 会给我脚本。现在,这个表有信息,所以我认为我不应该为这个表使用创建脚本。

新列应允许空值。

那我应该用什么?

供您参考,这里是创建表的脚本:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Test](
    [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [No] [char](20) NOT NULL,
    [Date] [smalldatetime] NULL,
    [ProjectType] [char](500) NULL,
    [ProjectPhase] [char](300) NULL,
    [rejected_reason] [varchar](max) NULL,
    [archived_reason] [varchar](max) NULL,
    [forward_to] [varchar](max) NULL,
    [forward_type] [varchar](max) NULL,
    [forward_concern] [varchar](max) NULL,
 CONSTRAINT [PK_Test] 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] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLATestB_No]  DEFAULT ('*') FOR [No]
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLATestB_Status]  DEFAULT ((2)) FOR [Status]
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLATestB_AID]  DEFAULT ((0)) FOR [AID]
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLATestB_Hit]  DEFAULT ((0)) FOR [Hit]
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLATestB_Sent]  DEFAULT ((0)) FOR [Sent]
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLATestB_SentTo]  DEFAULT ((0)) FOR [SentTo]
GO

ALTER TABLE [dbo].[Test] ADD  CONSTRAINT [DF_LLa_Added_To_Cart]  DEFAULT ((0)) FOR [Added_To_Cart]
GO

应添加到此表的新列示例如下:

[rejected_reason] [varchar](max) NULL,
[archived_reason] [varchar](max) NULL,
[forward_to] [varchar](max) NULL,
[forward_type] [varchar](max) NULL,
4

1 回答 1

0

当您在 MSDN 上学习 SQL Server 联机丛书时,它应该是小菜一碟 - 使用ALTER TABLE

 ALTER TABLE dbo.LLa
 ADD [rejected_reason] [varchar](max) NULL

 ALTER TABLE dbo.LLa
 ADD [archived_reason] [varchar](max) NULL

 ALTER TABLE dbo.LLa
 ADD [forward_to] [varchar](max) NULL

 ALTER TABLE dbo.LLa
 ADD [forward_type] [varchar](max) NULL

问题更多:你真的需要为你的每一列提供最多 2 GB 的数据VARCHAR(MAX)吗?好像有点矫枉过正了!

您应该始终使用适当的数据类型 - 如果该列最多只能容纳 100 个字符 - 为什么不使用VARCHAR(100)而不是使用最大数据类型?

于 2012-12-03T08:24:03.220 回答