1

SQL Server 2008 に id と name の 2 つの列を持つテーブルがあるとします。ここで、"description" という名前のテーブルに null 非許容の列を追加したいとします。この列を追加する過程で、name のデータを description のデータの元のバッチとして使用したいとします。これを直接行う方法はありませんか。つまり、テーブルを削除して再作成したり、追加後に手動で値を入力したりしませんか? 方法があるとすれば、どのように?ありがとう!

4

1 に答える 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 に答える