テーブルに新しい列を追加したい。テーブルにはすでにデータが入力されています。
これを行うには、テーブルの完全なコピーを作成し、内容を含めて、主キーID列を追加します。
したがって、新しいテーブルを作成できます。
create table myTestTable
(
ID uniqueidentifier NOT NULL,
SomeId uniqueidentifier NOT NULL,
SomeOtherId uniqueidentifier NOT NULL,
constraint table_constraint PRIMARY KEY (ID)
)
-- modify the script below to copy the old table across to the new one,
-- generating a unique ID (GUID) into
insert into myTestTable
(ID,
ClaimPaymentId,
TemplateId)
select
NEWID(),
SomeId ,
SomeOtherId
from [dbo].[TableToBeCopied]
次に、コピーしたテーブルをドロップして、コピーの名前を古いテーブル名に変更できます。
しかし、私はそのようなテーブルを約60個作成する必要があり、テーブルの名前をパラメーターとして取り、列定義を自動的に生成するスクリプトを作成したいと考えています。しかし、私はこれを行う方法を見ることができません。何か案は?
GUID ID列を次のように追加できます。
ALTER TABLE [yourSchema].[yourTable] add [ID] UNIQUEIDENTIFIER DEFAULT NEWID() NOT NULL
複数のテーブルに対してこれを行うには、次のようなものを使用できます。
SELECT 'ALTER TABLE '+QUOTENAME(s.name)+'.'+QUOTENAME(t.name)+' add [ID] UNIQUEIDENTIFIER DEFAULT NEWID() NOT NULL'
FROM sys.schemas s
JOIN sys.tables t ON t.schema_id = s.schema_id
WHERE ( (s.name = 'Schema1' AND t.name IN ('Schema1_TableList'))
OR
(s.name = 'Schema2' AND t.name IN ('Schema2_TableList'))
... -- Add more schemas and their tables as needed
)
これにより、すべてのALTER TABLE
ステートメントは、ID値が事前に入力されたID
UNIQUEIDENTIFER
列を作成します。