2011-01-15 15 views
0

連絡先をデータベースに挿入しようとしていますが、既存の連絡先を複製したくありません。データベースに連絡先を挿入するが、既存の連絡先を複製したくない

INSERTにはWHERE CLAUSEがあります。

アイデア?

//Insert INTO contact database 
$user_id = userid; 
$sql_insert = "INSERT into `jt_members_external_contacts` 
          (`j_user_id`,`contact_email`,`firstname`) 
       VALUES  ('$user_id','$email','$name') 
       WHERE  j_user_id !=$user_id AND contact_email != $email;"; 
+0

あなたは(MySQLの、SQL Serverの'05/'08など)を使用しているどのSQLデータベース含めるためにあなたのタグを指定するか、または更新できますどちらか? –

+0

Simplesメソッドは、他のレコードで複製できないレコードのすべてのフィールドにUNIQUE KEYを配置する方法です。 –

+0

の可能な複製[存在する場合、どのように更新するのですか?そうでない場合は挿入してください(別名upsertまたはマージ)をMySQLに入れますか?](http://stackoverflow.com/questions/1218905/how-do-i-update-if-exists- insert-if-not-aka-upsert-or-merge-in-mysql) – Mark

答えて

0

おそらくあなたは「アップ」をしたいですか?つまり、がINSERTを実行しようとしており、レコードがすでに存在する場合は、代わりにUPDATEを実行します。

これを行うには、まずSELECTを使用してレコードがすでに存在するかどうかを確認します。 連絡先がデータベースにない場合は、INSERTを実行します。 連絡先が既にデータベースにある場合は、更新を行います。

0

あなたはレコードが最初のインサートを実行する前に存在しているかどうかをチェックするストアドプロシージャを使用することができます。レコードが存在する場合、ストアドプロシージャは更新を行います。

selectの代わりにストアドプロシージャを使用して更新する利点は、データベースサーバーを2回ではなく1回だけヒットすることです。

0

別のオプションは次のとおりです。

//Insert INTO contact database 
$user_id = userid; 
$sql_insert = "INSERT into `jt_members_external_contacts` 
          (`j_user_id`,`contact_email`,`firstname`) 
       SELECT  '$user_id','$email','$name' 
       FROM  `jt_members_external_contacts` 
       WHERE  j_user_id !=$user_id AND contact_email != $email;"; 
関連する問題