내가 MySQL 데이터베이스에 두 개의 테이블이 인식하지 : "stock_pricing"와 "DATA_IMPORT을"MySQL의 트리거 INSERT ... 중복 키 UPDATE 열
첫 번째 테이블의열 : 초에 STOCK_ID
, DATE
, LAST_CLOSE_DOM_CURR
열 테이블 : STOCK_ID
, DATE
, ADJ_CLOSE
첫 번째 테이블에는 stock_id와 date의 인덱스가 함께 있습니다. 이것들은 UNIQUE로 정의되었습니다. 두 번째 테이블에 인덱스가 전혀 없습니다.
두 번째 테이블에는 들어오는 데이터가 있습니다. 이 테이블에는 들어오는 데이터를 첫 번째 테이블에 삽입하는 BEFORE INSERT 트리거가 있습니다.
삽입 트리거에서 STOCK_ID와 DATE의 조합이 첫 번째 테이블의 UNIQUE 인덱스를 위반하면 트리거의 ON DUPLICATE KEY UPDATE 부분이 실행됩니다.
내가 생각할 수있는 모든 조합을 시도했지만 트리거가 내 열 이름을 인식하지 못합니다. 많은 감사합니다. 당신은 테이블을 참조하는
BEGIN
INSERT INTO stock_pricing (`STOCK_ID`, `DATE`, `LAST_CLOSE_DOM_CURR`)
VALUES (DATA_IMPORT.STOCK_ID, DATA_IMPORT.DATE, DATA_IMPORT.ADJ_CLOSE)
ON DUPLICATE KEY UPDATE
stock_pricing.STOCK_ID= DATA_IMPORT.STOCK_ID, stock_pricing.DATE= DATA_IMPORT.DATE, stock_pricing.LAST_CLOSE_DOM_CURR= DATA_IMPORT.ADJ_CLOSE;
END
고든에게 감사드립니다. 네 고유 키가 있습니다. 내 게시 된 코드는 전체 코드이며 Mqsql 참조 설명서에서 필자의 의견을 받았습니다. 난 당신의 코드를 시도했지만 불행히도 여전히 동일한 응답을 얻을 : SQL 오류 (1054) 알 수없는 열 'ADJ_CLOSE'필드 목록에서 '. – Mark
@ user3237164 . . 그것은 새로운 테이블에있는 컬럼의 이름 인'VALUES (LAST_CLOSE_DOM_CURR)'이어야한다. –
DATA_IMPORT.ADJ_CLOSE 값을 stock_pricing.LAST_CLOSE_DOM_CURR에 입력하면 LAST_CLOSE_DOM_CURR = VALUES (LAST_CLOSE_DOM_CURR)을 (를) 어떻게 사용할 수 있습니까? 왜 그렇게되지 않을까요? LAST_CLOSE_DOM_CURR = VALUES (di.ADJ_CLOSE) ?? 부수적으로 작동하지 않는 것도 있습니다. 나는 매우 혼란 스럽다. 트리거의 중복 부분을 실행하는 시점에 di.ADJ_CLOSE 값이 LAST_CLOSE_DOM_CURR 값으로 전달 되었기 때문입니까? – Mark