ALTER TABLEのシンタックス
日付 | 2009/10/28 |
---|---|
ID | 75917 (英語原文参照) |
バージョン | 11 |
プラットフォーム | Mac & Win |
ALTER TABLEのドキュメントには、コマンドのシンタックスが次のように表現されています。
ALTER TABLE sql_name {ADD column_definition | DROP sql_name | ADD primary_key_definition | DROP PRIMARY KEY | ADD foreign_key_definition | DROP CONSTRAINT sql_name | SET SCHEMA sql_name}
つまり、ALTER TABLEコマンドには、いろいろな句を記述することができますが、一度に使用することができるのは、いずれかひとつであることを意味しています。
次の例は、ふたつのテーブルが存在し、その間に1対nリレーションを確立してします。ALTER TABLEが複数回コールされていることに注目してください。Begin SQL/End SQLをテーブルで分けているのは、読解性のためです。FOREIGN KEYを定義するためには、すでにPRIMARY KEYが存在していることが必要ですから、この順番を入れ替えることはできません。
なお、この例では、ふたつの異なる方法でPRIMARY KEYを指定しています。最初の例では制約に名前を定義しており、次の例では名前の定義を省略しています。名前の定義は、後にその制約をALTER TABLEで参照する場合に必要です。
Begin SQL ALTER TABLE MyOneTable ADD myOneID INT32 UNIQUE NOT NULL AUTO_INCREMENT; ALTER TABLE MyOneTable ADD PRIMARY KEY myOneID; End SQL Begin SQL ALTER TABLE MyManyTable ADD myManyID INT32 UNIQUE NOT NULL AUTO_INCREMENT; ALTER TABLE MyManyTable ADD CONSTRAINT pk_MyManyTable PRIMARY KEY myManyID; ALTER TABLE MyManyTable ADD myOneID INT32 NOT NULL; ALTER TABLE MyManyTable ADD CONSTRAINT fk_MyManyTbl_to_MyOneTbl FOREIGN KEY(myOneID) REFERENCES MyOneTable (myOneID) ON DELETE CASCADE; End SQL