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

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

WBOY
WBOYオリジナル
2016-06-13 13:47:01828ブラウズ

【素朴な疑問】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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。