-2

私は彼らがうまく機能しているデータベースを備えたアプリケーションを持っていて、すべてがうまくいっています。

ここで、データベース内の1つのテーブルに列を追加して、テーブルを変更する必要があります。私はSQLServerを使用していますが、データベース管理者から、そのテーブルを変更するスクリプトを提供するように依頼されました。

それで、それをどのように行うのですか?

SQL Server Management Studioを使用しており、テーブルを右クリックすると、作成するスクリプトを選択していました。ManagementStudioからスクリプトが提供されます。さて、このテーブルには情報があるので、このテーブルにcreateスクリプトを使用するべきではないと思います。

新しい列はnull値を許可する必要があります。

だから私は何を使うべきですか?

参考までに、テーブルを作成するためのスクリプトは次のとおりです。

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でSQLServerBooks Onlineを学習した場合、それは簡単なことです。ALTERTABLEを使用してください。

 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ギガバイトのデータ( )が本当に必要ですか?VARCHAR(MAX)ちょっとやり過ぎのようです!

常に適切なデータ型を使用する必要があります-その列が最大100文字しか保持できない場合-VARCHAR(100)最大データ型を使用する代わりに使用しないのはなぜですか?

于 2012-12-03T08:24:03.220 に答える