LucidDbUpsert
From Eigenpedia
[edit]
Syntax
MERGE INTO qualified-table-name [ [ AS ] alias ]
USING aliased-table-ref
ON predicate-expression
{ when-matched | when-not-matched | when-matched when-not-matched }
when-matched ::=
WHEN MATCHED THEN
UPDATE SET { unqualified-column-name = value-expression }, ...
when-not-matched ::=
WHEN NOT MATCHED THEN
INSERT [ ( unqualified-column-name, ... ) ]
VALUES row-constructor
See LucidDbValueExpression for specification of value-expression and predicate-expression.
See LucidDbSelectExpression for specification of aliased-table-ref.
See LucidDbExplicitValues for specification of row-constructor.
See LucidDbUniqueConstraints for interaction between upsert and uniqueness constraints.
[edit]
Affected Row Counts
The "lastUpsertRowsInserted" session parameter (described in LucidDbSessionParameters) can be used to obtain the number of rows inserted by a MERGE. The number of rows updated can be computed by subtracting off the number of rows inserted from the number of rows affected (returned by the JDBC driver Statement.executeUpdate call).
[edit]
Example
MERGE INTO warehouse.employee_dimension tgt USING transform_schema.emp2_view src ON src.empno=tgt.empno WHEN MATCHED THEN UPDATE SET ename=src.ename, dname=src.dname, job=src.job WHEN NOT MATCHED THEN INSERT(empno, ename, dname, job) VALUES(src.empno, src.ename, src.dname, src.job); SELECT CAST(param_value AS BIGINT) AS num_rows_inserted FROM sys_root.user_session_parameters WHERE param_name='lastUpsertRowsInserted';
