안녕하세요 오래만에 다시 질문 드립니다.
postgreSQL function 작성을 하고 있는데요.
타 테이블의 데이터를 한개의 row씩 가져와서 online_users_f 테이블의 기존 내용이랑 비교한 후에
바뀐 행만 insert하는 간단한 코드입니다 ㅠㅠ 간단한 게 분명한데 저는 안되네요...후후
-- f_bbgs_onusers_upsert3() CREATE OR REPLACE FUNCTION a.f_onusers_upsert6(arg_pk1 integer,arg_online_content_pk1 integer,arg_user_id character varying(50), arg_cumulative_time double precision,arg_last_seen_time double precision, arg_page integer,arg_percentage double precision,arg_last_updated timestamp without time zone) RETURNS void AS $$ DECLARE d_cnt integer := 0; BEGIN LOOP BEGIN select count(*) into d_cnt from a.online_users_f where online_content_pk1 = arg_online_content_pk1 and user_id = arg_user_id and last_updated = arg_last_updated; IF d_cnt != 0 THEN RAISE NOTICE 'This is existed row'; ELSE insert into a.online_users_f values (arg_pk1, arg_online_content_pk1, arg_user_id, arg_cumulative_time, arg_last_seen_time, arg_page, arg_percentage, arg_last_updated); RETURN; END IF; END; END LOOP; END; $$ LANGUAGE plpgsql;
여기서 a는 스키마명입니다.
어느 부분이 틀린걸까요...?