Oracle-Merge的使用

Oracle-Merge

code

create table t_user_tmp(
id varchar2(32) ,
name varchar2(16),
pass varchar2(16),
createtime timestamp
);
-- 创建一个用户临时测试表
select * from t_user_tmp;
-- 选择所有测试用户
merge into t_user_tmp tmp
using t_user u 
on (tmp.id = u.id)
when matched then 
update set tmp.pass='123'
when not matched then 
insert values (u.id,u.name,u.pass,CURRENT_TIMESTAMP);
-- 记得是matched 而不是match,如果不加上ed会报缺少关键字的错误
-- 如果满足条件就更新,也就是测试用户如果不在原来的用户表中就进行更新
-- 如果没有就插入
-- using 后面的集合表示要操作的集合,如果操作的集合有变化,应该在这里加上where条件做一个子查询返回一个集合
-- on后面则是matched的判断条件
-- 使用when判断条件是否满足then是满足或者不满足条件所做的动作
-- then之后做的动作可以不止一条sql语句,可以有多条,例如在满足条件之后加上删除 delete语句也是可以滴

printscreen

Oracle-Merge的使用