Subject Re: [firebird-support] on delete cascade not working as expected
Author Ann W. Harrison
martinknappe wrote:
> let's assume the select procedure for the selection of entries from
> dicentries is called select_procedure(params)
> when an update on dskrpts is taking place, the server could check
> whether this updates is to do with the fields dskrpts.asdskrpt or
> dskrpts.zsdskrpt. let's assume dskrpts.asdskrpt was changed from 'a'
> to 'b'
> now the server could check to see if there is any open connection
> where data was sent to via select_procedure(params) and
> "where 'a' in select asdskrpt1 from select_procedure(params)"
> if that is so, the respective record could be refreshed (don't know
> whether that's possible at all w/o the respective dataset first
> requesting a refresh)

Err... Well, one of the ACID principles is C - consistent. That
means that within a transaction, a select statement gets the same
results with the same parameters, every single time. Another
principle is I - independent, meaning that interim results of one
transaction are not visible to other transactions. Your suggestion
violates both of those, and some others.

If you want to get the most recent committed values from the database,
the correct procedure is to commit your transaction and reissue the
query. Don't expect the database to push uncommitted values to an
existing query!