0

私は次のようなデータベーステーブルを持っています:

-- Table KNOWN_AS
create table `known_as`(
id int not null auto_increment,
person_id int not null,
default_name boolean not null,
first_name varchar(100) not null,
middle_name_1 varchar(100),
middle_name_2 varchar(100),
middle_name_3 varchar(100),
last_name varchar(100),
primary key(id),
foreign key(person_id) references `person`(id)
) engine=innodb;

値を挿入するとき、一意の「person_id」がそれぞれ1つの真の「default_name」を持っていることを確認したいと思います。

これまでに行ったすべてのグーグルなどにより、値を非負に保つ方法、または値が一意であることを確認する方法を説明するページが作成されました。複数のエントリ間で1つの値が一意であることを確認する方法ではありません(ALLではありません)。

どんな助け/ポインタも大歓迎です!!

4

1 に答える 1

1
  1. それぞれの一意の「person_id」に真の「default_name」が1つだけあることを確認したい

    テーブルに列default_nameとして保存してみませんか?NOT NULLperson

  2. 1つの値をチェックする方法は、複数のエントリ間で一意です(すべてではありません)

    UNIQUEコンポジットのインデックスを定義し(person_id, default_name)ます。

     ALTER TABLE known_as ADD UNIQUE INDEX (person_id, default_name);
    
于 2012-09-02T11:45:23.360 に答える