2013年5月22日 星期三

防止資料重覆寫入 Insert + where

在過去,要新增一筆不重覆的資料,我們會這麼做


$title ='www';
$sql = "Select * from tablename where title='$title'";
$query = mysql_query( $sql );
if( mysql_num_rows( $query ) )
{
  exit('資料已存在');
}
else
{
  $sql ="insert tablename values('$title')";
  mysql_query( $sql );
  exit('資料寫入成功');
}



不過,這樣做,會執行兩次SQL Query,增加 DB Server Loading....

可以利用 INSERT加上 WHERE 條件


INSERT INTO table ( `field1`, `field2`, `field3` ) 
SELECT '101', 'data1' , NOW() 
FROM DUAL 
WHERE NOT EXISTS 
 ( 
   SELECT 1 
   FROM `yp518_url_stores` 
   WHERE `field1` = '101' 
   LIMIT 1 
 );

將要新增的資料串成一個 SQL 即可

延伸思考:
也可以應用在 電子商務 ,確認 ( WHERE條件 ) 商品存量 > 1 才可以完成下單 ( INSERT NEW ORDER ),避免下單後卻沒有商品出貨。


沒有留言:

張貼留言