This paper proposes an optimistic concurrency control scheme for use in transactional client-server database systems. To improve performance, objects are cached at the clients. The proposed scheme provides serializability for committed transactions. This is in contrast to many modern systems that only provide the snapshot isolation property which is weaker than serializability. A novel feature is that the processing load for validating transactions at commit time is shared between clients and the database server, thereby reducing the load at the server. The performance of the scheme is evaluated using simulation experiments. The experiments demonstrate that for mostly read only transaction load - for which caching is most effective - the scheme outperforms the existing concurrency control scheme with client-side caching considered to be the best, and matches the performance of the widely used scheme that only provides snapshot isolation.