正常情况下,mysql 的 replace into 功能,也可以通过insert ignore 或者 if not exists 等关键词替代实现
然而,在oscar 数据库里,replace 不能使用,而且 ignore 或 if 等关键词 它也不认
最终研究发现,得用 MERGE INTO
比如想要实现这么一个功能
REPLACE INTO TEST.TABLE_A(KEY2, VALUE2, TYPE) VALUES ('xxx_flag', 'true', 'default');
在 oscar 里就应该这么写: 如果能查询到相同的数据,就更新一下一个无关紧要的字段,否则就执行插入操作
MERGE INTO TEST.TABLE_A T USING ( SELECT 'xxx_flag' AS KEY2, 'true' AS VALUE2, 'default' AS TYPE ) S ON (S.KEY2 = T.KEY2) WHEN MATCHED THEN UPDATE SET T.TYPE = S.TYPE WHEN NOT MATCHED THEN INSERT (KEY2, VALUE2, TYPE) VALUES ( 'xxx_flag', 'true', 'default' );
原创文章,欢迎转载,转载请注明出处!