2012-01-21 27 views

答えて

3

これはyoutアプリケーションのビジネスロジックに依存します。

重複したエントリについてユーザに通知したり、INSERT ... ON DUPLICATE KEY UPDATE ... SQL文で情報をサイレントに更新することができます。

0

基本的には、主キーフィールドに挿入しようとしている値が既に存在するかどうかを確認する必要があります。

プライマリキーフィールドがsubject_idの場合、selectクエリを実行してPHPのmysql_num_rows関数を実行して、すでに存在するかどうかを確認する必要があります。例:

$subject_id = 1337; 
$check = mysql_query("SELECT `subject_id` FROM `examsubjectrecord_table` WHERE `subject_id`=" . $subject_id); 

// See if anything was returned 
if(mysql_num_rows($check) > 0) { 
    // We have something with this subject_id already! 
    echo "Cannot insert duplicate subject!"; 
} else { 
    // All clear, run your INSERT query here 
} 
+0

@MichaelMior半分の仕事を引き渡して、何らかの小切手を組み立ててERRORSを返さないようにしたいのであれば、そうですね...このステップを省略できると思います。しかし、適切なアプリケーションを構築したい場合は、実際にエラーが発生しないようにしてください。 – Oldskool

+0

正常に処理されている限り、エラーが発生しても何の問題もありません。特に共通のケースにエラーがない場合。不要なオーバーヘッドと複雑さを追加するだけです。 –

+0

@MichaelMiorそれはかなり正確に私のポイントですが、エラーは**適切に処理する必要があります**。挿入する前に重複しているキーをチェックしていなければ、それを処理していません。 – Oldskool

0

どの列が主キーですか?私はそれがsubject_idと仮定するつもりです。これは、テーブルの各行に対して一意である必要があります。これを確実にする最も簡単な方法は、AUTO_INCREMENTを使用してから、subject_idを挿入することを避けることです。自動的に割り当てられます。

新しい科目のIDが何であるかを調べる必要がある場合は、mysql_insert_idを使用できます。

1

データベースには、重複していないsubject_idの主キーがあります。

subject_id列に重複が必要な場合は、列を追加してデータベースの主キーとして設定する必要があります。たとえば、別の列unique_idを追加し、auto_incrementに設定し、行識別の主キーとして設定します。

関連する問題