내 데이터베이스의 이벤트 bd_yellowbox
은 데이터베이스 groupofficecom
에 추가해야합니다. bd_yellowbox
에있는 하나의 이벤트 데이터는 세 개의 속성 표 element
, actions
및 actionsparam
에 저장됩니다. 세 테이블 모두 공통적으로 하나의 열이 있습니다 (ID_ELEMENT
). 한 데이터 요소에 대해 세 테이블 모두에서 열의 값이 같습니다.INSERT/REPLACE INTO ... SELECT; 중복 문제
groupofficecom
의 한 이벤트 데이터는 cal_events
및 cf_cal_events
의 두 테이블에 저장됩니다. cal_events
의 기본 키는 id
이며 자동 증가됩니다. cf_cal_events
의 기본 키는 model_id
이고 NOT 자동 증가입니다.
REPLACE INTO groupofficecom.cal_events (data1,data2)
VALUES ('1','Tom Hanks')
REPLACE INTO groupofficecom.cf_cal_events (model_id, col_10)
SELECT groupofficecom.cal_events.id, bd_yellowbox.element.ID_ELEMENT
FROM bd_yellowbox.element, groupofficecom.cal_events
WHERE bd_yellowbox.element.ID_ELEMENT=bd_yellowbox.actions.ID_ELEMENT
AND bd_yellowbox.element.ID_ELEMENT=bd_yellowbox.actionsparam.ID_ELEMENT;
문제 # 1 : cf_cal_events
데이터의 삽입이
cf_cal_events.col_10 = bd_yellowbox.element.ID_ELEMENT
:
cf_cal_events.model_id = cal_events.id
두 데이터베이스
테이블cf_cal_events
의 열 통해 연결된 하나의 이벤트가 다른 ID로 여러 이벤트로 삽입됩니다.
문제 2 : 쿼리를 다시 실행하면 두 이벤트에 새 이벤트로 이벤트가 다시 삽입됩니다. cf_events.id의 AUTO_INCREMENT 때문에 id
이 새로 생성되어 변경된 이벤트가 bd_yellowbox
데이터베이스에서 업데이트되지 않도록합니다.
감사합니다.
실제로 데이터베이스가 좋지 않다는 것에 동의하지만, 두 데이터베이스가 모두 프로그램이기 때문에 아무것도 변경할 수 없으며 하나에서 다른 이벤트 만 추가하면됩니다. 그것은 한 방향 INSERT 관계입니다. – rand
하지만 문제 # 0을 바로 잡을 수 있습니까? 그렇지 않으면 나는 너를 도울 방법을 모른다. –
더 일반화되면서 문제를 다시 작성한다는 뜻입니까? – rand