テーブルを修正する際には、他のデータベースユーザーの処理が妨げられるおそれがあります。他のユーザーがデータベースに接続していても ALTER TABLE 文を使用できますが、目的のテーブルが使用されていると ALTER TABLE 文は実行できません。また、大規模なテーブルの修正には時間がかかり、その間そのテーブルを使用できません。
テーブル上の既存の検査制約を変更するには、いくつかの方法があります。
テーブルまたはカラムに新しい検査制約を追加できます。
カラムの検査制約を NULL に設定すると削除できます。次に、Customers テーブルの Phone カラムから検査制約を削除する文の例を示します。
ALTER TABLE Customers ALTER Phone CHECK NULL; |
検査制約の追加と同じ方法で、カラムの検査制約を置換できます。次に、Customers テーブルの Phone カラムの検査制約を追加または置換する文の例を示します。
ALTER TABLE Customers ALTER Phone CHECK ( Phone LIKE '___-___-____' ); |
テーブルに定義された検査制約を変更できます。
ALTER TABLE と ADD table-constraint 句を使って新しい検査制約を追加できます。
制約名を定義済みの場合は、制約を個別に変更できます。
制約名を定義していない場合は、ALTER TABLE DELETE CHECK を使って、既存のすべての検査制約 (カラム検査制約、ドメインから継承した検査制約など) を削除してから、新しい検査制約を追加できます。
ALTER TABLE 文で DELETE CHECK 句を使用するには、次のように指定します。
ALTER TABLE table-name DELETE CHECK; |
Sybase Central では、テーブル検査制約とカラム検査制約の両方を追加、変更、削除できます。
テーブルからカラムを削除しても、そのカラムと関連付けられていた検査制約はテーブル制約から削除されません。制約を削除しないと、テーブルに対してデータの挿入や、単に問い合わせを行っただけでもエラーメッセージが生成されます。
テーブル検査制約は FALSE が返された場合にエラーとなります。UNKNOWN が返されても、動作は TRUE が返される場合と同じで、その値が受け入れられます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |