You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Trejkaz (JIRA)" <ji...@apache.org> on 2007/10/28 23:49:50 UTC

[jira] Created: (DERBY-3155) Support for SQL:2003 MERGE statement

Support for SQL:2003 MERGE statement
------------------------------------

                 Key: DERBY-3155
                 URL: https://issues.apache.org/jira/browse/DERBY-3155
             Project: Derby
          Issue Type: New Feature
          Components: SQL
            Reporter: Trejkaz


A relatively common piece of logic in a database application is to check for a row's existence and then either update or insert depending on its existence.

SQL:2003 added a MERGE statement to perform this operation.  It looks like this:

    MERGE INTO table_name USING table_name ON (condition)
    WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]
    WHEN NOT MATCHED THEN INSERT column1 [, column2 ...] VALUES (value1 [, value2 ...]) 

At the moment, the only workaround for this would be to write a stored procedure to do the same operation, or to implement the logic client-side.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-3155) Support for SQL:2003 MERGE statement

Posted by "Denis Assanbaev (RD-Software GmbH) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-3155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557766#action_12557766 ] 

Denis Assanbaev (RD-Software GmbH) commented on DERBY-3155:
-----------------------------------------------------------

I find this feature usefull for also for other cases:
currently derby cannot provide an update using data from another table.

UPDATE XXX  t_u
set (col1, col2, col3)
= (select col_n1,col_n2,col_n3
     from XXX t_n
     where t_n.id = t_u.id).
CURRENT OF- version doesn't help too.

UPDATE XXX  t_u
set col1
= (select col_n1
     from XXX t_n
     where t_n.id = t_u.id),
col2
= (select col_n2
     from XXX t_n
     where t_n.id = t_u.id).
works, but it results in a lot of updates or performance boosts when 
using for a table with ~ 100 columns.

Regards

-- 
Mit freundlichen Grüßen / Kind Regards

Denis




> Support for SQL:2003 MERGE statement
> ------------------------------------
>
>                 Key: DERBY-3155
>                 URL: https://issues.apache.org/jira/browse/DERBY-3155
>             Project: Derby
>          Issue Type: New Feature
>          Components: SQL
>            Reporter: Trejkaz
>
> A relatively common piece of logic in a database application is to check for a row's existence and then either update or insert depending on its existence.
> SQL:2003 added a MERGE statement to perform this operation.  It looks like this:
>     MERGE INTO table_name USING table_name ON (condition)
>     WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]
>     WHEN NOT MATCHED THEN INSERT column1 [, column2 ...] VALUES (value1 [, value2 ...]) 
> At the moment, the only workaround for this would be to write a stored procedure to do the same operation, or to implement the logic client-side.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.