SQLサーバには完全に機能するデータベースがあります。約40のテーブル。私は複数の他のSQL Serverインスタンスにこのスキーマ(データのみではなくスキーマ)をインストールする必要があります。 SSMSは、Tasks - > Generate Scriptsを使用してスキーマを自動生成する良い方法を提供します。それはちょっと動作しますが、私はそれを正しく理解すればわからない:私は(、スクリプトを実行し、まったく同じ内容で新しいスクリプトを作成し、それに新しい列を追加する場合は、たまたまssmsでデータベーススキーマスクリプトを作成
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[TableName](
[id] [uniqueidentifier] NOT NULL,
[history] [varchar](max) NOT NULL,
[isdeleted] [bit] NOT NULL,
CONSTRAINT [PK_RecGroupData] PRIMARY KEY CLUSTERED
(
[rid] 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]
END
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[DF_TableName_id]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[TableName] ADD CONSTRAINT [DF_TableName_id] DEFAULT (newid()) FOR [id]
END
--Just showing one ALTER TABLE and IF NOT EXISTS. The others are generated in the same way.
何 - - >id
,history
,isdeleted
,timestamp
)?それは自動的に新しい行を追加しますか?もちろん、はい、もちろんだと思いますが、列がNOT NULL
、VARCHAR
、BIT
、またはそれに類するものである必要があるかどうかはわかりません。それはちょうど
ALTER TABLE [dbo].[TableName] ADD CONSTRAINT [DF_TableName_id] DEFAULT (newid()) FOR [id]
(id
=>新しいサンプル列) を実行するだろうが、データ型または任意の他の修飾子についての情報はありません。 また、私はこの1つのように二度目の私のスクリプトを実行した場合、それはいくつかのエラーをスローします:
Meldung 1781、エベヌ16、ステータス1、Zeile 3 アン死ぬSpalteイストbereitsアインDEFAULT-ワートgebunden 。このように変換さ
:1781
メッセージ、レベル16、状態1、行3 デフォルト値が既にカラムに結合されています。
どうしてですか?
申し訳ありませんが、私はあなたの質問を理解していません。テーブルに列を追加する方法と、「メッセージ1781を取得する理由」という2つの個別の質問をしていますか? –
はい、どこに問題がありますか? 1つではなく2つの質問は、大丈夫ではないですか? –