MERGE INTO public.users m USING ( SELECT #{activated} as activated , #{nickname} as nickname , #{username} as username , #{password} as password ) s ON ( m.username = s.username ) WHEN MATCHED THEN UPDATE SET activated = s.activated , nickname = s.nickname , username = s.username , password = s.password WHEN NOT MATCHED THEN INSERT ( activated , nickname , username , password ) VALUES ( s.activated , s.nickname , s.username , s.password ) DELETE FROM public.users m WHERE user_id = #{userId} MERGE INTO public.user_authority m USING ( SELECT (SELECT user_id FROM public.users WHERE username=#{username}) as user_id , #{authorityName} as authority_name ) s ON ( m.user_id = s.user_id ) WHEN MATCHED THEN UPDATE SET authority_name = s.authority_name WHEN NOT MATCHED THEN INSERT ( user_id , authority_name ) VALUES ( s.user_id , s.authority_name ) DELETE FROM public.user_authority m WHERE user_id = #{userId}