FrontPage
»
RelationalStorage
»
RelationalStorageSQLCallsByMethod
»
MarkOldRecordsAsCurrent
This should be an update where exists, but right now:
SELECT * FROM %(data)s
WHERE z_serial = ?
AND z_status IN (c, g)
Then for each row returned:
UPDATE %(data)s SET z_status = c
WHERE z_serial = ?
AND z_oid = ?
A possible solution that uses an UPDATE WHERE EXISTS is (nonworking):
UPDATE %(data)s targ SET z_status =cWHERE EXISTS ( SELECT * FROM %(data)s curr WHERE curr.z_oid = targ.z_oid AND curr.z_pre = targ.z_serial AND curr.z_status =cAND curr.z_serial = ? )