2012-01-17 8 views
1

私は最初の100行( "最初の100人の顧客"と思う)のアプリケーションを持っています。特定の列のデフォルトを10としたいとします。そのプロモーションが終了したら、それは2になるように自動的に行う方法があります。予期せず1000行があふれないようにする方法はありますか?特定の期間やローに達すると、mysqlのデフォルト設定が変更されますか?

新しい行が追加されるたびに行数を照会し、mysql_num_rowsが100を超える場合、デフォルトを10から2に変更するSQL文を実行できますか?

答えて

0

私はコード内のテーブルスキーマを変更することを回避しようとするので、どのようなものについて:

  1. (例えば2)恒久的な値で、デフォルトのままにしておきます。

  2. は、挿入のためのテーブルをロックします。*

  3. 行を挿入します。

  4. 結果の行IDを確認します(ただし、行カウントを設定しています)。

  5. IDが100以下の場合は、列を更新してください(2 - > 10など)。

  6. テーブルをロック解除します。

*:これは、トランザクションなど、これを行う別の方法があります。それはあなたが期待しているボリュームに依存します。

+0

これはうまくいくかもしれないと思いますが(私が正しく理解していれば)、100人が既に割り当てられていると想定しているようです。私はサイトが始まる前に動作する方法を望んでいます。そうすれば、それがウイルスになったら、問題を解決することはできません。代わりに、それは私が数週間チェックしていないと、突然50人がサインアップしないように非常に遅いかもしれません。したがって、これを自動的に行う方法は役に立ちます。あなたの考えに感謝します...それは確かに良い解決策です! – user1149499

+0

いいえ、既に100人がいるという前提はありません。手順4と5は100人が割り当てられているかどうかをチェックし、特別な値を設定しない場合はチェックします。 100人が割り当てられた後、ステップ5の条件は真でなくなり、(100を超えるすべての人のための)通常のデフォルトが自動的に使用されます。これはあなたの望むものです。 –

関連する問題