ホームページ > バックエンド開発 > PHPチュートリアル > データベース処理の同時実行のための緊急 PHP コード

データベース処理の同時実行のための緊急 PHP コード

WBOY
リリース: 2016-06-13 13:45:16
オリジナル
721 人が閲覧しました

緊急ヘルプ: データベース処理の同時実行のための PHP コードの一部
次のように 2 人が本を購入するのを防ぐ方法

テーブル book (id, name, num) num は在庫数量です
の場合例 (1," 高級言語", 1) このような本は、ある瞬間に複数の人がクリックして購入し、そのうちの 1 人が購入します。購入後、在庫が変更されます
方法トランザクションを使用して実装しますか? ? ?

PHP は初めてです。詳しく教えてください!




-----解決策---------- - ----------
トランザクションを使用する必要がありますか? すべてはあなたのコントロール下にあります。
------解決策----------------------
コードはあなたが書きました。自由にコントロールできます。 購入者が「内定」かどうかを判断して購入させ、データベースの在庫を変更することができます。そうでなければ、買わせないでください。
------解決策------------------
この問題はデータベースについて考慮する必要はありません。自動的にロック機能があり、2人が同時にデータテーブルを変更することはありません。数量が0かどうかを判定します。0の場合は購入できなくなりますので、判定結果を返すようにデータベースステートメントを修正します。
------解決策---------
UPDATE table SET num=0 WHERE num>0 AND id=888;
在庫がすでに 0 の場合、彼はそれを変更すると思いますか?
------解決策---------

話し合う

Quote:

Quote:

UPDATE table SET num=0 WHERE num>0 AND id=888;
在庫がすでに 0 の場合、どう思いますか? 彼はそれを修正しますか?

それは確かに可能です

しかし、私が使用するのは挿入です

------解決策---------
テーブルレコードを購入した人を記録するには別のレコードを使用してください
------解決策---------
話し合う

引用:

引用:

引用:

引用:

UPDATE テーブル SET num=0 WHERE num>0 AND id = 888;
在庫がすでに 0 の場合、彼はそれを変更すると思いますか?

それは確かに可能です

しかし、私が使用するものは


あなた...

------解決策---------
議論は本当に激しいです~
------解決策---------
set autocommit = 0 ,insert ,update commit
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート