1

データがプリロードされた既存のテーブルに新しい列を追加しています。この列は別のテーブルの主キーを使用しており、これをデフォルトで5にしたいと考えています。次のコードを試しました:

ALTER TABLE group
ADD group_type INT
GO
ALTER TABLE group
ADD CONSTRAINT FK_group_type DEFAULT 5 FOR group_type
GO

グループテーブルの変更を期待していた場合、すべての値が 5 で埋められますが、代わりに NULL になります。私は何を間違っていますか?

4

4 に答える 4

2

まず、DEFAULT 制約を (独自の SQL ステートメントで) 列に追加しても、その列の既存のデータには影響しません。その列に値を提供しない、そのテーブルへの新しい INSERTS のみに影響します。

次に、ここでは FOREIGN KEY 制約を作成していません。

編集:

FK を正しく作成する 1 つの方法を次に示します。

ALTER TABLE group
ADD group_type_id INT
GO

ALTER TABLE group 
ADD CONSTRAINT fk_groupType FOREIGN KEY (group_type_id) 
REFERENCES group_type (group_type_id)
于 2013-07-15T19:35:53.160 に答える
0

テーブルに新しい null 非許容列を追加すると、デフォルトの制約を追加すると既存の行に影響します。

ALTER TABLE group
ADD group_type INT NOT NULL
CONSTRAINT DK_group_type DEFAULT 5
GO
于 2013-07-15T19:42:03.627 に答える