postgre에서 oracle_fdw를 이용하여 오라클 서버의 data를 foreign table로 조회하고 이 foreign table에 대하여 DML test를 하고 있습니다.
1. 먼저 oracle 서버에 LJH 스키마에 있는 ic_process_tbl 테이블입니다. 최대한 간단하게 만들었습니다.
CREATE TABLE ic_process_tbl
(
cycl character varying(10) NOT NULL,
proc_code character varying(10) NOT NULL,
proc_name character varying(100)
CONSTRAINT ic_process_tbl_pkey PRIMARY KEY (cycl)
);
INSERT INTO ic_process_tbl VALUES ('200501', 'P000001', '프로세스');
INSERT INTO ic_process_tbl VALUES ('200501', 'P010000', '1. 전사수준');
INSERT INTO ic_process_tbl VALUES ('200501', 'P020000', '2. 매출');
=> 이런식으로 만들어서 data를 insert 해 놓았습니다.
2. 위의 오라클 서버의 테이블을 postgre에서 oracle_fdw를 이용하여 foreign 테이블로 조회합니다.
create extension oracle_fdw;
create server ora foreign data wrapper oracle_fdw options (dbserver '//보안상 ip는 지우겠습니다./ORCL');
create user mapping for ljh server ora options (user 'LJH', password '보안상 비번은 지우겠습니다');
이제 foreign 테이블을 생성해주는데 여기서 에러가 발생합니다.
ljh=# create foreign table ic_process
ljh-# (cycl character varying(10) NOT NULL primary key,
ljh(# proc_code character varying NOT NULL,
ljh(# proc_name character varying(100))
ljh-# server ora options (schema 'LJH', table 'IC_PROCESS_TBL');
이렇게 생성하려 하면
ERROR: primary key constraints are not supported on foreign tables
LINE 2: (cycl character varying(10) NOT NULL primary key,
이렇게 에러가 발생하는데, 보면 foreign 테이블에선 primary key를 지원하지 않는다고 합니다..
LINE 2에서 primary key를 지우고 foreign 테이블을 생성하면 생성이 됩니다. 하지만 pk설정이 꼭 필요한 이유가
저 테이블에 대해 DML 테스트를 해야하는데 pk 없이 insert는 가능하지만 update나 delete는 pk없이 불가능하기 때문입니다..
해결방법을 계속 찾고있는데 고수분의 의견을 여쭙고자 합니다
|