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}