回答:
SQL関連の質問と同じように、DBMSに依存します。一部のDBMSでは、カンマで区切られたALTERテーブル操作を組み合わせることができます。例えば...
Informix構文:
ALTER TABLE one
ADD two_id INTEGER,
ADD CONSTRAINT FOREIGN KEY(two_id) REFERENCES two(id);
IBM DB2 LUWの構文も同様で、キーワードADDを繰り返しますが、(図を正しく読んだ場合)追加された項目を区切るためにコンマは必要ありません。
Microsoft SQL Server構文:
ALTER TABLE one
ADD two_id INTEGER,
FOREIGN KEY(two_id) REFERENCES two(id);
他のいくつかはそのようなALTER TABLE操作を組み合わせることができません。標準SQLでは、ALTER TABLEステートメントで単一の操作しか許可されないため、標準SQLでは、2つのステップで実行する必要があります。
MS-SQLServerの場合:
ALTER TABLE one
ADD two_id integer CONSTRAINT fk FOREIGN KEY (two_id) REFERENCES two(id)
でMS SQL SERVER:
ユーザー定義の外部キー名を使用
ALTER TABLE tableName
ADD columnName dataType,
CONSTRAINT fkName FOREIGN KEY(fkColumnName)
REFERENCES pkTableName(pkTableColumnName);
ユーザー定義の外部キー名なし
ALTER TABLE tableName
ADD columnName dataType,
FOREIGN KEY(fkColumnName) REFERENCES pkTableName(pkTableColumnName);
2020年の更新
かなり古い質問ですが、人々はまだそれに戻ってきています。上記の回答が役に立たなかった場合は、新しい列に他のテーブルのIDと同じデータ型を使用していることを確認してください。
私の場合、私はLaravelを使用していましたが、負のID LOLを持つ意味がないため、すべてのIDに「符号なし整数」を使用しています。
そのため、生のSQLクエリは次のように変更されます。
ALTER TABLE `table_name`
ADD `column_name` INTEGER UNSIGNED,
ADD CONSTRAINT constrain_name FOREIGN KEY(column_name) REFERENCES foreign_table_name(id);
それが役に立てば幸い
あなたはSQL Serverで以下のようにそれを行うことができます
ALTER TABLE one
ADD two_id int foreign key
REFERENCES two(id)
FK列を追加するPostgreSQL DLL:
ALTER TABLE one
ADD two_id INTEGER REFERENCES two;
これを試して:
ALTER TABLE product
ADD FOREIGN KEY (product_ID) REFERENCES product(product_ID);