On 11-9-2013 11:32, Svein Erling Tysvær wrote: > Firebird is not a 'dirty' database and there's no way to update any > uncommitted record. Neither is it possible for any other transaction to read > changes you've done in your transaction before your transaction commits (so > ReadUncommitted does not exist in Firebird). Firebird is not even a database > that locks records. Rather, Firebird uses a versioning system, and each > record can exist in one or more versions. > > The reason you cannot UPDATE anything, is because another transaction has > modified (or deleted or inserted) the record, but not committed yet. Until > that transaction commits or rolls back, no other transaction will be able to > modify that record (it will be possible to read earlier versions, just not > update or delete the record). > > So, Firebird does not support dirty reads/updates, but the versioning system > makes it so that the only lock conflicts you can get is when two writers > tries to update the same record (readers never block anyone and writers never > block readers). Your SELECT * FROM EMPLOYEES_TABLE > ought not to fail, but it will return old values at least until FtrUpdate > commits (note, I know nothing about C#).
If the transaction is READ COMMITTED NO_RECORD_VERSION, then a read can be blocked by a different uncommitted transaction. The default for read committed in the .net provider however is READ COMMITTED RECORD_VERSION. Mark -- Mark Rotteveel
