為了達到資料一致性,我們會在程式上包Transaction的動作
但是一旦包了Transaction,在尚未commit之前,如果不是在同一個connection下
無法讀到資料
譬如
create connection1
create connection2
connection1.insert
connection2.select -> 會抓不到 connection1.insert 的資料
除非connection1.commit
但是如果是
connection1.select -> 這就可以抓到 connection1.insert 的資料,即使尚未 connection1.commit
所以聰明的你應該知道,那就在一個動作內,都用同一個connection就好啦
沒錯
而且,我們可以把connection存到session變數內
經過測次,也可以有一樣效果
這樣一來就不用一直傳遞connection參數
只要需要時,去session抓出來用就好
譬如某段執行時,可以
create_connection();
do_something();
drop_connection();
---------------------------------------
create_connection() {
create connection
connection open
create trainsation
begin trainsation
store connection to session
}
do_someting() {
get connection from session
query....
update.....
}
drop_connection() {
get connection from session
connection.commit
drop connect
drop session
}
沒有留言:
張貼留言