0

知りたいのですが、大きなテーブルで条件付き更新を実行する必要がある場合は、これが最善のアプローチです。

直接更新を行うか、更新前に既存のエントリを確認します。

function doDirectUpdate()
{
   // UPDATE table WHERE condn
}

また

function doCheckAndUpdate()
{
   // SELECT COUNT(id) AS exist FROM table WHERE condn
   if(id exists)
   {
      // UPDATE table WHERE condn
   }
   else
   {
      echo 'No matching entry';
   }
}
4

1 に答える 1

1

単に一致する行の数、または一致する行の欠如を表示するために、両方を実行してからSELECT条件付きを実行するべきではありません。UPDATEを実行する必要があるのSELECTは、一致する行がX個を超える場合に更新しないように指示する他のロジックがある場合のみです。

UPDATE更新されたために一致した行の数を返します。からの戻り値を取得し、UPDATE一致するエントリがない場合はアラートを受け取る必要があります。

function doUpdateAndAlertIfNotMatched()
{
   numberOfRowsUpdated = UPDATE table WHERE condn;
   if(numberOfRowsUpdated == 0)
   {
      echo 'No matching entry';
   }
}

参照:http ://dev.mysql.com/doc/refman/5.0/en/update.html#id844302

于 2012-10-11T23:35:49.147 に答える