Subject | Transcation Isolation level |
---|---|
Author | cengiz.ucar |
Post date | 2008-12-23T21:27:29Z |
Hello,
I have a problem with the transaction locking mechanism of firebird.
At first I run the SQL1 (update) procedure . While it was waiting on
the msgbox row, SQL2 (select) procedure starts. But select statement
of SQL2 waits until CommitTrans of SQL1 completed. As far as I know
default isolation level is ReadCommitted. Even I tried ReadUncommitted
option but the result is the same. Same code works fine with oracle.
Is there anything wrong with my codes or is this a Firebirs bug?
Many thanks,
Sub SQL1()
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open ("DRIVER=Firebird/InterBase(r) driver; UID=sysdba;
PWD=masterkey;
DBNAME=10.0.0.223:c:\dinamosql\d7s\@FIREBIRD_2007\data\MHL_2007.fdb;")
conn.BeginTrans
conn.Execute ("UPDATE STOK00 SET NAME='123' WHERE CODE='ZZ'")
MsgBox ("Before End Trans")
conn.CommitTrans
conn.Close
Set conn = Nothing
End Sub
Sub SQL2()
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open ("DRIVER=Firebird/InterBase(r) driver; UID=sysdba;
PWD=masterkey;
DBNAME=10.0.0.223:c:\dinamosql\d7s\@FIREBIRD_2007\data\MHL_2007.fdb;")
Dim rs
Set rs = conn.Execute("SELECT * FROM STOK00 WHERE CODE='ZZ'")
MsgBox ("Select Finished")
If Not rs.EOF Then
MsgBox ("rs.EOF Finished")
rs.MoveFirst
MsgBox ("MoveFirst Finished")
MsgBox rs("NAME")
End If
conn.Close
Set conn = Nothing
End Sub
I have a problem with the transaction locking mechanism of firebird.
At first I run the SQL1 (update) procedure . While it was waiting on
the msgbox row, SQL2 (select) procedure starts. But select statement
of SQL2 waits until CommitTrans of SQL1 completed. As far as I know
default isolation level is ReadCommitted. Even I tried ReadUncommitted
option but the result is the same. Same code works fine with oracle.
Is there anything wrong with my codes or is this a Firebirs bug?
Many thanks,
Sub SQL1()
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open ("DRIVER=Firebird/InterBase(r) driver; UID=sysdba;
PWD=masterkey;
DBNAME=10.0.0.223:c:\dinamosql\d7s\@FIREBIRD_2007\data\MHL_2007.fdb;")
conn.BeginTrans
conn.Execute ("UPDATE STOK00 SET NAME='123' WHERE CODE='ZZ'")
MsgBox ("Before End Trans")
conn.CommitTrans
conn.Close
Set conn = Nothing
End Sub
Sub SQL2()
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open ("DRIVER=Firebird/InterBase(r) driver; UID=sysdba;
PWD=masterkey;
DBNAME=10.0.0.223:c:\dinamosql\d7s\@FIREBIRD_2007\data\MHL_2007.fdb;")
Dim rs
Set rs = conn.Execute("SELECT * FROM STOK00 WHERE CODE='ZZ'")
MsgBox ("Select Finished")
If Not rs.EOF Then
MsgBox ("rs.EOF Finished")
rs.MoveFirst
MsgBox ("MoveFirst Finished")
MsgBox rs("NAME")
End If
conn.Close
Set conn = Nothing
End Sub