【簡單有關問題】類比Oracle序的鎖有關問題
來源:互聯網
上載者:User
【簡單問題】類比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:序的值
我在取得 select sequence_value from pb_sequence where sequence_name= 'mysql_sequence'
大家知道我查詢的時候,就要鎖定這條記錄。 任何人都不能查詢這條記錄。 否則資料就不一致了。
然後 update pb_sequence set sequence_value = sequence_value +1 where sequence_name= 'mysql_sequence'
等我update後才能釋放鎖。
-----------------------
能否用PDO寫這個句子? 這個和PDO有關嗎? 還是只與SQL語句有關? 因為我看PDO只有開啟事務。
PDO 好像沒有什麼設定可以讓你查詢的時候,別人都阻塞啊?
------解決方案--------------------
SELECT ... FOR UPDATE
http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html