I am wondering how the dataphor's developers have managed to make constraints work so well.
For a constraint to play its role, its query should be run against a database that is build from :
The initial database plus
the user inserts/deletes/updates plus
All the modifications done by all the transactions that have commited after the user's transaction started (and of course before the constraints are evaluated).
The 2 first points does not cause any problem. But, unless I am wrong, the 3rd cannot always be insured.
Considering a RDBMS such as SQL-SERVER, there seems to exist no isolation level that guarantee that a transaction sees all commited changes done by others transaction. ReadCommited isolation level seems to do the job but often causes deadlocks.
This only solution I see (but I am not a SQLDBMS expert) is to run one transaction at a time.
How does dataphor handle that situation?