INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
위에 쿼리문은 값은 INSERT 하는데, 대신 ID 값이 이미 존재하면 INSERT가 아닌 UPDATE를 실행하는 구문입니다.
xe 상의 XML로 구현할려니까 감이 안잡히는데요. 어떤식으로 작성해야 되나요?
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
위에 쿼리문은 값은 INSERT 하는데, 대신 ID 값이 이미 존재하면 INSERT가 아닌 UPDATE를 실행하는 구문입니다.
xe 상의 XML로 구현할려니까 감이 안잡히는데요. 어떤식으로 작성해야 되나요?
XE에서 쓰는 XML 문법은 여러 DB에서 공통으로 지원하는 최소한의 기능만 보장하는데,
ON DUPLICATE KEY UPDATE는 MySQL에서만 지원하는 비표준 기능이라서 지원하지 않습니다.
UPDATE를 먼저 해보고 affected rows가 없으면 INSERT를 하는 방법도 있고
(라이믹스에서는 DB::getInstance()->getAffectedRows() 사용 가능... XE에는 함수 없음)
INSERT를 먼저 해보고 에러가 나면 UPDATE를 하는 방법도 있습니다.
성능이나 안정성 면에서는... UPDATE가 더 잦을 것으로 예상된다면 전자가 유리하고
INSERT가 더 잦을 것으로 예상된다면 후자가 유리합니다.