この文は、テーブル定義を修正するために使用します。
ALTER TABLE table-name {
add-clause
| modify-clause
| drop-clause
| rename-clause
}
add-clause :
ADD { column-definition | table-constraint }
modify-clause :
ALTER column-definition
drop-clause : DROP { column-name | CONSTRAINT constraint-name }
rename-clause : RENAME { new-table-name | [ old-column-name TO ] new-column-name | CONSTRAINT old-constraint-name TO new-constraint-name }
column-definition : column-name data-type [ [ NOT ] NULL ] [ DEFAULT column-default ] [ UNIQUE ]
column-default : GLOBAL AUTOINCREMENT [ ( number ) ] | AUTOINCREMENT | CURRENT DATE | CURRENT TIME | CURRENT TIMESTAMP | NULL | NEWID( ) | constant-value
table-constraint : [ CONSTRAINT constraint-name ] { fkey-constraint | unique-key-constraint } [ WITH MAX HASH SIZE integer ]
fkey-constraint : [ NOT NULL ] FOREIGN KEY [ role-name ] ( ordered-column-list ) REFERENCES table-name ( column-name, ... ) [ CHECK ON COMMIT ]
unique-key-constraint : UNIQUE ( ordered-column-list )
ordered-column-list : ( column-name [ ASC | DESC ], ... )
add-clause テーブルに新しいカラム制約またはテーブル制約を追加します。
ADD column-definition 句 テーブルに新しいカラムを追加します。カラムにデフォルト値がある場合は、新しいカラムのすべてのローにそのデフォルト値が移植されます。この句のキーワードとサブ句の詳細については、Ultra Light CREATE TABLE 文を参照してください。
ADD table-constraint 句 テーブルに制約を追加します。オプションの制約名を使用すると、テーブル全体の制約を修正することなく、後で個々の制約を修正したり削除したりできます。この句のキーワードとサブ句の詳細については、Ultra Light CREATE TABLE 文を参照してください。
Ultra Light では、プライマリ・キーを追加することはできません。
modify-clause 1 つのカラム制約を変更します。column-definition が ALTER 文の一部の場合には、プライマリ・キーは使用できません。column-definition の詳細については、Ultra Light CREATE TABLE 文を参照してください。
drop-clause カラム制約またはテーブル制約を削除します。
DROP column-name テーブルからカラムを削除します。カラムがインデックス、一意性制約、外部キー、またはプライマリ・キーに含まれている場合は、それらのオブジェクトを削除しないと、Ultra Light がカラムを削除できません。
DROP CONSTRAINT table-constraint テーブル定義から指定された制約を削除します。table-constraint の詳細については、Ultra Light CREATE TABLE 文を参照してください。
Ultra Light では、プライマリ・キーを削除することはできません。
rename-clause テーブル名、カラム名、制約名を変更します。
RENAME new-table-name テーブルの名前を new-table-name に変更します。古いテーブル名を使用しているアプリケーションを修正する必要があることに注意してください。古いテーブル名を自動的に割り当てられた外部キーは、名前を変更しません。
RENAME old-column-name TO new-column-name カラムの名前を new-column-name に変更します。古いカラム名を使用しているアプリケーションを修正する必要があることに注意してください。
RENAME old-constraint-name TO new-constraint-name 制約の名前を new-constraint-name に変更します。古い制約名を使用しているアプリケーションを修正する必要があることに注意してください。
Ultra Light では、プライマリ・キーの名前を変更することはできません。
column-constraint カラム制約は、データベース内のデータの整合性を保つために、カラムに格納できる値を制限します。カラム制約は UNIQUE である必要があります。
UNIQUE テーブル内の各ローをユニークに識別する 1 つまたは複数のカラムを識別します。テーブル内の異なるローが、指定されているすべてのカラムで同じ値を持つことはできません。1 つのテーブルに複数の一意性制約が存在することがあります。
1 つの ALTER TABLE 文では、1 つの table-constraint または column-constraint だけを追加、変更、または削除できます。
役割名は外部キーの名前です。role-name の主な機能は、同じテーブルに対する 2 つの外部キーを区別することです。また、CONSTRAINT constraint-name を使用して外部キーに名前を付けることができます。ただし、両方のメソッドを使用して外部キーに名前を付けないでください。
テーブルまたはカラムの制約は MODIFY (変更) できません。制約を変更するには、古い制約を DELETE (削除) し、新しい制約を ADD (追加) します。
名前の末尾が nosync のテーブルは、末尾が nosync のテーブル名に変更する必要があります。Ultra Light の nosync テーブルを参照してください。
テーブルを対象とした文が、別の要求やクエリですでに参照されている場合、ALTER TABLE は実行できません。同様に、テーブルの変更中は、そのテーブルを参照する要求は処理されません。また、データベースにアクティブなクエリやコミットされていないトランザクションがある場合は ALTER TABLE を実行できません。
Ultra Light.NET を使用している場合、すべてのデータ・オブジェクト (たとえば ULDataReader) に対して Dispose メソッドも呼び出さないと、この文を実行できません。Dispose メソッドを参照してください。
スキーマの変更が同時に開始された場合、文は解放されません。DDL 文を使用したスキーマ変更を参照してください。
次の文は、MyEmployees という架空のテーブルから Street カラムを削除します。
ALTER TABLE MyEmployees DROP Street; |
次の例は、MyCustomers という架空のテーブルの Street カラムを変更して、約 50 文字を格納するようにします。
ALTER TABLE MyCustomers MODIFY Street CHAR(50); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |