4

新しい列と Productを作成したいテーブルがあります。これらの列はnullを許可しません。Modified_ByModified_Date_Time

ただし、データベースにはすでにデータがあるため、この列を作成するには、「nullを許可する」と定義する必要がありました。次に、新しい列を更新するプロセスを実行します。最後のステップは「nullを許可する」プロパティのチェックを外すことでしたが、テーブルの変更を保存しようとすると、次のエラーが発生しました。

'Product_Details'テーブル-テーブルを変更できません。
列'Modified_Date_Time'、テーブル'VendorProducts.dbo.Tmp_Product_Details'に値NULLを挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了されました。

すべての行が「Modified_By」列と「Modified_Date_Time」列の正しい値で正常に更新されたため、このエラーが発生する理由がわかりません...とにかく、新しい「一時的な」テーブルがSQLによって作成されたようですServer 2008、「Tmp_Orders」という名前のテーブルがないため

4

2 に答える 2

6
ALTER TABLE {TABLENAME} 
    ADD {COLUMNNAME} {TYPE} {NOT NULL} 
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

デフォルト値を設定する必要があります。

ALTER TABLE Product ADD Modified_By datetime DEFAULT (GETDATE())

デフォルト値は今日に設定されます。

于 2012-12-11T16:18:24.487 に答える
1

インタラクティブなデザインは、この種のことはあまり得意ではないと思います。制約を手動で追加する方がよい

 ALTER TABLE Table_Name ALTER COLUMN Column_Name DataType NOT NULL

例えば

 ALTER TABLE MyTable ALTER COLUMN A_Column Int NOT NULL;
于 2012-12-11T16:23:00.893 に答える