У меня есть сервер Express, использующий пакет узла MySQL, связанный с приведенной ниже таблицей MySQL.Сервер запрашивает другую таблицу между данными STR_DT
и END_DT
, преобразует эти данные, сохраняет их локально и выполняет другие действия.Я хочу, чтобы эта таблица transaction
отслеживала, на каком этапе она находится.Каждый шаг обновляет таблицу как
UPDATE transaction SET progress = ‘Transforming’ WHERE PRTNR_ID = ‘testID’ AND STR_DT = '2018-12-03' AND END_DT = '2018-12-09';
, но я хотел бы использовать ON DUPLICATE KEY UPDATE
что-то более похожее на
INSERT INTO transaction (ID, PRTNR_ID, PROGRESS, STR_DT, END_DT) VALUES(1, 'testID', 'Processing', '2018-12-03', '2018-12-09') ON DUPLICATE KEY UPDATE PROGRESS = 'Transforming';
Однако,Я не уверен в том, как лучше всего получить требуемый ID
, поскольку он автоматически генерируется и регулярно используется на сервере Express.Должен ли я использовать SELECT
, чтобы сначала найти ID
на основе PRTNR_ID
, STR_DT
и END_DT
, а затем запустить INSERT … ON DUPLICATE KEY UPDATE
?Есть ли лучший способ?
Спасибо за помощь
DROP TABLE IF EXISTS transaction
CREATE TABLE transaction(
ID MEDIUMINT NOT NULL AUTO_INCREMENT,
PRTNR_ID CHAR(30) NOT NULL,
PROGRESS CHAR(30) NOT NULL,
STR_DT DATE NOT NULL,
END_DT DATE NOT NULL,
LAST_UPD_TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
INSERT INTO transaction
(PRTNR_ID, PROGRESS, STR_DT, END_DT)
VALUES
('testID', 'Processing', '2018-12-03', '2018-12-09');