[ https://issues.apache.org/jira/browse/DERBY-6723?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14117220#comment-14117220 ]
Knut Anders Hatlen commented on DERBY-6723: ------------------------------------------- I believe the standard does allow it, but it is currently disabled because of some technical challenges when the source table is not a base table. There is a similar request for allowing views as source (DERBY-6656), and it sounds as if the underlying problem that needs to be solved, is the same for both of these issues. > Allow derived table as a source in MERGE statement > -------------------------------------------------- > > Key: DERBY-6723 > URL: https://issues.apache.org/jira/browse/DERBY-6723 > Project: Derby > Issue Type: Improvement > Components: SQL > Affects Versions: 10.11.1.1 > Reporter: Aleksei Kovura > Priority: Minor > > I'm trying to utilize MERGE to do an upsert operation like this: > MERGE INTO "APP"."ST_KEY_VAL" trg USING (SELECT * FROM (VALUES ('key1', > 'val1')) as t1 (st_key, st_val)) as src > ON trg.st_key = src.st_key > WHEN MATCHED THEN UPDATE SET st_val = src.st_val > WHEN NOT MATCHED THEN INSERT VALUES (src.st_key, src.st_val) > ; > Derby returns an error: > Error: The source table of a MERGE statement must be a base table or table > function. > SQLState: 42XAL > ErrorCode: 30000 > MERGE is used this way on other databases, unfortunately I can't find whether > it is standard compliant or not. If this gets implemented, I would use it in > PreparedStatement, replacing values with "?"-s. -- This message was sent by Atlassian JIRA (v6.3.4#6332)