我正在使用以下架构进行复制。
主(出版)数据库模式:
CREATE TABLE public.patient (
pk int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
patientid int8 NOT NULL GENERATED ALWAYS AS (public.fnGetPrimaryKey(pk, clientid)) STORED,
firstname varchar(50) NOT NULL,
clientid int2 NOT NULL,
CONSTRAINT pk_patient PRIMARY KEY (patientid));
副本身份:
CREATE UNIQUE INDEX patient_replica_identity ON patient (patientid);
ALTER TABLE patient REPLICA IDENTITY USING INDEX patient_replica_identity;
副本(订阅)数据库模式:
CREATE TABLE public.patient (
pk int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
patientid int8 NOT NULL GENERATED ALWAYS AS (public.fnGetPrimaryKey(pk, clientid)) STORED,
firstname varchar(50) NOT NULL,
clientid int2 NOT NULL,
CONSTRAINT pk_patient PRIMARY KEY (patientid)
);
当我开始复制时,系统会抛出以下错误:
错误:发布者没有发送逻辑复制目标关系“public.patient”期望的副本标识列
如果我将主键 patientid 更改为CONSTRAINT pk_patient PRIMARY KEY (clientid,pk)
,它将正常工作。
我不想更改订阅数据库的主键。
如果您有任何解决方案,请告诉我。