Frequently I have to use queries of the following kind to update a local table based on values from a proxy table (usually the remote server being a MS SQL Server):
AFAIK, these queries are generally not supported and return a SQLCODE -728 ("Update operation attempted on non-updatable remote query"). My usual workaround is to fetch the needed remote values in a local temporary table and join that against the local table, something like
Question: While that workaround is acceptable, is there a way in v12.0.1 to allow one-step updates with remote tables, i.e. some tuning of server capabilities or the like? (Note: The udate/delete itself would always modify the local table, not the remote one - the latter often being used with a read-only remote server.) asked 15 Apr '11, 06:30 Volker Barth |
Volker, I am sorry to tell you that the restriction with performing update/delete operations on a join between a proxy table and a local table is still in place for SA 12.0.1 and will likely remain in place for quite some time. I realize that the restriction only makes sense when it is actually the remote table that is being updated or deleted from; however, for consistency and other less obvious/internal reasons, the restriction is in place regardless of whether it is the local or remote table that is being modified. There are no tweaks you can make to capability bits or options that will allow the restriction to be relaxed. Your approach of using an intermediate temporary table is the correct/recommended approach. answered 18 Apr '11, 07:47 Karim Khamis Mark Culp Thanks for the clarification - I can easily cope with that limitation:)
(18 Apr '11, 07:53)
Volker Barth
|
You may be able to use the MERGE statement like:
http://dcx.sybase.com/index.html#1201/en/dbreference/merge-statement.html answered 15 Apr '11, 15:34 Tyson Lewis I have been very existing about this approach - MERGE is one of the newer statements I don't use too often. However, unfortunately, this approach seems to fail, too, with a -134 ("MERGE INTO <remote_table> is not supported") error message (tested on Win32 with 12.0.1.3298). Note that - in contrast to the error message - I'm trying to merge into the LocalTable as in Tyson's sample. As I understand, the particular branches of a MERGE statement's actions are done with ordinary INSERT/UPDATE/DELETE statements - therefore it seems reasonable that MERGE has the same restrictions as the underlying UPDATE statement.
(18 Apr '11, 04:07)
Volker Barth
Replies hidden
Should read "I have been very excited at this approach..."
(18 Apr '11, 07:22)
Volker Barth
|