Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データベースの作成 » データ整合性の確保 » テーブル制約とカラム制約の使い方

 

検査制約の変更と削除

テーブルを修正する際には、他のデータベース・ユーザの処理が妨げられるおそれがあります。他のユーザがデータベースに接続していても ALTER TABLE 文を使用できますが、目的のテーブルが使用されていると 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 が返される場合と同じで、その値が受け入れられます。