SQL Server 2008 に id と name の 2 つの列を持つテーブルがあるとします。ここで、"description" という名前のテーブルに null 非許容の列を追加したいとします。この列を追加する過程で、name のデータを description のデータの元のバッチとして使用したいとします。これを直接行う方法はありませんか。つまり、テーブルを削除して再作成したり、追加後に手動で値を入力したりしませんか? 方法があるとすれば、どのように?ありがとう!
1 に答える
3
計算列として求めているものは可能ですが、後で説明を個別に変更することはできません。
ログなどへの影響を最小限に抑えるためにできることは、null 許容として追加し、バッチで値を更新してから、null 非許容に変更することです。
ALTER TABLE dbo.foo ADD description VARCHAR(whatever) NULL;
SELECT 1;
BEGIN TRANSACTION;
WHILE @@ROWCOUNT > 0
BEGIN
COMMIT TRANSACTION;
BEGIN TRANSACTION;
UPDATE TOP (1000) dbo.foo
SET description = name
WHERE description IS NULL;
END
ALTER TABLE dbo.foo ALTER COLUMN description VARCHAR(whatever) NOT NULL;
COMMIT TRANSACTION;
または、Demsが提案したように、デフォルト値でnull不可として追加し、後でデフォルトの制約を削除します。
于 2012-09-17T16:04:12.140 に答える