ホームページ > バックエンド開発 > PHPチュートリアル > [簡単な関連質問] Oracle オーダーでのロック関連の問題のシミュレーション

[簡単な関連質問] Oracle オーダーでのロック関連の問題のシミュレーション

WBOY
リリース: 2016-06-13 13:47:01
オリジナル
844 人が閲覧しました

【素朴な疑問】Oracleシーケンスのロック問題をシミュレーションしてみます。
急いで使用するので、ロック機構については今後詳しく学びます。

MYSQL は ORACLE の順序をシミュレートします。
CREATE TABLE `pb_sequence` (
`sequence_id` int(11) NOT NULL DEFAULT '0',
`sequence_name` varchar(25) DEFAULT NULL,
`sequence_value` bigint(20) DEFAULT NULL,
`sequence_type` varchar(20) DEFAULT NULL,
PRIMARY KEY (`sequence_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

sequence_name: シーケンスの名前
sequence_value: シーケンス値

I am getting select sequence_value from pb_sequence where sequence_name= 'mysql_sequence'
クエリを実行するときは、このレコードをロックする必要があることは誰もが知っています。 誰もこの記録をクエリすることはできません。 そうしないと、データに不整合が生じます。
次に、pb_sequence を更新します。 set sequence_value = sequence_value +1 where sequence_name= 'mysql_sequence'
更新してロックを解放するまで待ちます。
----------------------

この文を PDO を使って書けますか? これはPDOと関係があるのでしょうか? それとも単に SQL ステートメントに関連しているのでしょうか? PDO はトランザクションを開くことしかできないと思うからです。
PDO には、クエリ時に他のユーザーをブロックできる設定がないようです?





-----解決策---------
更新のために ... を選択してください
http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

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