-1

フィールドの 1 つが True の場合、3 つのフィールドに UNIQUE INDEX を追加したいと考えています。すなわち1に等しい

UNIQUE INDEX pkg_box_delivered (package_id、box_id、配達済み) WHERE 配達済み = 1;

Alter ステートメントと、それを Create Table ステートメントに追加する方法が必要です。

4

1 に答える 1

0

テーブル内の一部の行にインデックスを作成することはできません。値に関係なく、テーブル内のすべての行に対してのみ作成できます。

Alter ステートメントが必要で、それを Create Table ステートメントに追加する方法

ALTER TABLE を使用して既存のテーブルの定義を変更しますが、CREATE TABLE はテーブルとそのフィールドを作成します。したがって、テーブルが既に存在する場合....

 ALTER TABLE yourtablename 
   ADD UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered);

または、まだ存在しない場合....

 CREATE TABLE yourtablename (
         package_id INT NOT NULL,
         box_id INT NOT NULL,
         delivered BOOLEAN,
         ...
         UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered)
 );

一部の行にインデックスを選択的に適用できないのと同様に、一意制約を選択的に適用することはできません。これを強制するには、トリガーを追加する必要があります。

于 2013-07-23T08:49:46.833 に答える