2011-06-24 5 views
1

一般的に、これを防ぐためにユニークキーまたはプライマリキーを使用できますが、私の場合はそうです。だから、SQL - 特定の条件で重複を防ぐにはどうすればいいですか?

 
--------------------------------------------------------- 
| UserName  | FavoriteLink      | 
--------------------------------------------------------- 
| Ryan   | http://www.google.com    | 
--------------------------------------------------------- 
| Ryan   | http://www.yahoo.com    | 
--------------------------------------------------------- 
| Joyce   | http://www.google.com    | 
--------------------------------------------------------- 
| Joyce   | http://www.cnn.com    | 
--------------------------------------------------------- 

、各ユーザーはfavoritelinksの多くを持つことができますが、彼らは重複favoritelinkを持つべきではない、例えば、ライアンはhttp://www.google.comための2つのfavoritelinkを持つべきではありません。私はこのようなキャメルトー表を作成しています。 RyanとJoyceの両方がhttp://www.google.comのお気に入りリンクを持っているため、このテーブルではFavoriteLinkフィールドが重複している可能性があります。

ここに質問があります。特定の人のためにFavoriteLinkを重複させずにこのテーブルにデータを挿入するにはどうすればいいですか?

+0

あなたはユニークなキーについて言及していますが、このような状況ではどのように適していませんか? –

+0

@ウィル:彼はコンポジットキーについて知らなかったと思います。ユニークなリンクを作ることは、リンク+ユーザのユニークなコンボではなく、1つのリンクだけが許されることを意味します。 – Amadan

答えて

3

複合ユニークインデックスを追加できます。

CREATE UNIQUE INDEX username_favorite_uniq ON yourTable (UserName, FavoriteLink) 
4

コンポジットキー。

CREATE TABLE userlinks (
    user VARCHAR(255), 
    link VARCHAR(255), 
    PRIMARY KEY (user, link) 
) 

または

CREATE TABLE userlinks (
    id INTEGER AUTO_INCREMENT PRIMARY KEY, 
    user VARCHAR(255), 
    link VARCHAR(255), 
    UNIQUE KEY (user, link) 
) 

それはあなたがしたいです正確に何に依存します。

+0

ありがとう!できます!! – Ryan403

関連する問題