a method is disclosed for concurrency control in a system having both pessimistic and optimistic transactions , comprises the steps of entering locks on objects both for optimistic and pessimistic transactions , and validating an optimistic transaction at commit time by checking that all objects on which said optimistic transaction holds a lock have not become obsolete during the execution of said optimistic transaction . further , a system is shown enabling optimistic and pessimistic transactions to coexist , comprising a lock table into which locks are entered for both optimistic and pessimistic transactions , a wait queue in which pessimistic transactions are entered to wait for locks held by either optimistic or pessimistic transactions , a conflict table which is referenced to determine if a lock held by a first transaction is a conflict lock with respect to a lock requested by a second transaction , and code connected to the lock table , wait queue , and conflict table . this code which is responsive to transaction requests , updates the lock table and the wait queue so that optimistic transactions do not wait for locks to release , whereas pessimistic transactions do wait for locks to release . other systems and methods are also disclosed .