저는 대량으로 기본적으로 하드 코딩 된 데이터와 동적 사용자 데이터를 배포 한 취미 앱을 개발 중입니다. 하드 코드 된 데이터를 로컬로 업데이트하는 기능이 필요합니다 (UPDATE
, INSERT
초 이상). 그런 다음이 데이터를 서버로 내 보냅니다. 즉, 데이터를 파일로 덤프하고 새 행 (비교적 적은 수)이 INSERT
ed이고 기존 행 (PK로 식별 됨)이 UPDATE
d가되도록 가져와야합니다. 분명히 새 행은 서버에서 INSERT
이 될 수 없습니다 (또는 PK가 잠재적으로 충돌하여 오류 UPDATE
을 발행 할 수 있음). 이는 허용되는 제한 사항입니다. 그러나 012W는 UPDATE
d가 될 수 없습니다. 사용자가 액세스 할 수있는 테이블에는 "정적"테이블에 대한 FK 제약 조건이 있으므로 동기화 된 테이블을 삭제할 수는 없습니다. DELETE
PostgreSQL의 기존 행 가져 오기/업데이트
불행히도, 이것은 매우 어려운 것 같습니다. Google과 Postgres 메일 링리스트는 "MySQL과 같은"기능인 on_duplicate_key_update
이 "pg_loader can do it
"이라는 표시와 함께 새 버전 (부실 정보, 거기에 있습니까?)과 함께 나타납니다. 의 표시가 없음 .
최악의 시나리오에서는 가정용 솔루션 (데이터 파일 덤프, PK 충돌을 확인하고 INSERT
또는 UPDATE
문을 적절히 발행하는 사용자 지정 가져 오기 스크립트 작성)을 제안 할 수 있다고 생각하지만, 다른 사람들이 분명히 나 앞에서 마주 치게되는 문제에 대한 대단히 서투른 해결책으로 보인다.
의견이 있으십니까?
그냥 내 호기심을 위해서 - 서버에서 업데이트/삽입을 할 수없는 이유는 무엇입니까?모든 문제를 해결할 것 같은데. –
나는 할 수 있었다; 가장 큰 이유는 보안입니다 (가정용 시스템으로 핵심 데이터를 공격자에게 노출시키지 않을 것입니다 ...). 그리고 내가 종종 인터넷 연결없이 작업한다는 사실. –
내가 이해하지 못하는 것이 있어야합니다. 편집을 수행하는 위치에 따라 데이터가 더 취약한 이유는 무엇입니까? –