0

SQLServerの列のデータ型を変更する必要があります。では、実行する際の制約は何ですか?

インデックスやその他の制約を削除する必要があることはわかっていますか?

nullではないチェックを削除する必要がありますか?

データ型を変更する前に、他にどのようなことを確認する必要がありますか?

制約を削除してテーブルを変更してから、制約を再度追加する必要があります。

これはそうするための正しい方法ですか?

DROP INDEX UX_1_COMPUTATION ON  dbo.Computation 

ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) 

CREATE UNIQUE INDEX UX_1_COMPUTATION ON dbo.Computation (ComputationID);

は一意UX_1_COMPUTATIONのインデックス名、Computationはテーブル名、 ComputationIDは列名です。

これは正しいです ?

Update

したがって、composite index複数の列が関係している場合、どのように対処しますか?これらのインデックスには、主キー列と非主キー列が含まれています。

次のステートメントを実行しようとしたとき

DROP INDEX UX_2_COMPUTATION ON  dbo.Computation 

ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) 

CREATE UNIQUE INDEX UX_2_COMPUTATION ON dbo.Computation (ComputationID , ComputeGuid);

次の例外をスローしています

SQL DROP INDEX UX_2_COMPUTATION

        ON dbo.Computation

        ALTER TABLE dbo.Computation

        ALTER COLUMN ComputationID  NVARCHAR(10) Not Null

        CREATE INDEX UX_2_COMPUTATION 

        ON dbo.Computation (ComputationID , ComputeGuid): The object 

'PK_Computation' is dependent on column 'ComputationID '.:

      Caused By: Error executing SQL DROP INDEX UX_2_COMPUTATION 

        ON dbo.Computation

        ALTER TABLE dbo.Computation

        ALTER COLUMN ComputationID  NVARCHAR(10) Not Null

        CREATE INDEX UX_2_COMPUTATION 

        ON dbo.Computation (ComputationID , ComputeGuid): The object 

'PK_Computation' is dependent on column 'ComputationID '.:

      Caused By: The object 'PK_Computation' is dependent on column 'ComputationID '.

ありがとう、

-サム

4

1 に答える 1

2

現在のステートメントは、列をnull許容NVARCHAR(25)列に変更します-それはあなたが望むものですか?

列が確実に表示されるようNON NULLにする場合は、次のように明示的に指定する必要があります。

ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) NOT NULL
于 2012-12-18T13:59:21.987 に答える