Нахождение идентификатора MySQL с помощью экспресс-сервера - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть сервер 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...