HANA UPSERT判断数据存在则更新不存在新增
-- UPSERT关键字必须要有主键字段,会根据主键字段进行判断,如果字段存在就自动更新不存在则新增
UPSERT WIPUSER.Z_DEVICE_TEST2 VALUES (1, 2,4,18) WITH PRIMARY KEY;
或者
UPSERT WIPUSER.Z_DEVICE_TEST2(T1,T2,T3,T4) VALUES (2,5,21,12) WITH PRIMARY KEY;
-- 测试数据
CREATE COLUMN TABLE WIPUSER.Z_DEVICE_TEST2(
T1 NVARCHAR(32) PRIMARY KEY NOT NULL,
T2 NVARCHAR(32) COMMENT 'Test1',
T3 NVARCHAR(32) COMMENT 'Test2',
T4 NVARCHAR(32) COMMENT 'Test3'
);
SELECT * FROM Z_DEVICE_TEST2;
REPLACE | UPSERT
语法:
UPSERT [ <schema_name>. ]<table_name> [ <column_list_clause> ] { <value_list_clause> [ WHERE <condition> | WITH PRIMARY KEY ] | <subquery> }
REPLACE [ <schema_name>. ]<table_name> [ <column_list_clause> ] { <value_list_clause> [ WHERE <condition> | WITH PRIMARY KEY ] | <subquery> }
语法元素:
<column_list_clause> ::= ( <column_name>, ... )
<value_list_clause> ::= VALUES ( <expression>, ... )
<condition> ::= <condition> OR <condition>| <condition> AND <condition>| NOT <condition>| ( <condition> )| <predicate>
有关谓词的详情,请参阅 Predicates。
描述:
没有子查询的 UPSERT 或者 REPLACE 语句与 UPDATE 相似。唯一的区别是当 WHERE 子句为假(或没有Where子句)时,该语句像 INSERT 一样添加一条新的记录到表中。
对于表有 PRIMARY KEY 的情况,主键列必须包含在列的列表中。没有默认设定,由 NOT NULL 定义的列也必须包含在列的列表中。
有子查询的 UPSERT 或者 REPLACE 语句与 INSERT 一样,除了如果表中旧记录与主键的新记录值相同,则旧记录将被子查询返回的记录所修改。除非表有一个主键,否则就变得等同于 INSERT(即如果表没有设定主键,则为INSERT?),因为没有使用索引来判断新记录是否与旧记录重复。
有'WITH PRIMARY KEY'的 UPSERT 或 REPLACE 语句与有子查询的语句相同。其在 PRIMARY KEY 基础上工作。
例子:
post SAP-Garson
原文链接:https://blog.csdn.net/bj_chengrong/article/details/109455139文章来自于网络,如果侵犯了您的权益,请联系站长删除!