2

テーブルに一意の制約を持つフィールド (nicknameたとえば、名前付き) があります。つまり、同じニックネームをテーブルに挿入することはできません。したがって、ニックネームを挿入する前に、ニックネームがフィールドに存在するかどうかを知る必要があります。2 つの方法があります。この問題に対処するために、どちらが優れているか知りたいです。

1. (Only one SQL)   
    Insert data directly, then catch the database error code(in MySQL is 1586) to judge whether duplicate keys exist. 
2. (One or two SQL, and select maybe scan full table)
    Query the table first then decide to insert or not.
4

1 に答える 1

2

このエラーのケースは非常に特殊であるため、データベースの例外をキャッチしてそれに反応するだけです。ただし、テーブルに複数の一意のフィールドがある場合、これは問題を引き起こす可能性がありnicknameます。

同じ例外をスローする可能性のあるものが複数ある場合は、より具体的にする必要があります。これは、前もってクエリを実行することを意味する場合があります。

于 2013-09-25T02:15:48.677 に答える