Node.js MySQL - 检索UpdatedId - 插入重复键

时间:2015-07-10 19:34:27

标签: mysql database node.js

我正在尝试检索主键' id'我运行查询时的表格:

`INSERT INTO eval (evalTypeId, parentEvalId, authoredContentId) VALUES ( ?, ?, ?) 
ON DUPLICATE KEY UPDATE evalTypeId = VALUES(evalTypeId), parentEvalId = VALUES(parentEvalId), authoredContentId = VALUES(authoredContentId),[evalObject.evalTypeId, evalObject.parentEvalId, evalObject.authoredContentId]`

我的表格架构:

`CREATE TABLE IF NOT EXISTS eval (
id INT NOT NULL AUTO_INCREMENT,
  evalTypeId INT NOT NULL,
  parentEvalId INT NULL,
  authoredContentId VARCHAR(100) NULL,
  PRIMARY KEY (id) ,
  CONSTRAINT fk_eval_evalTypeId
    FOREIGN KEY (evalTypeId)
    REFERENCES .evalType (id)
    ON DELETE CASCADE
    ON UPDATE NO ACTION,
  CONSTRAINT fk_eval_parentEvalId
    FOREIGN KEY (parentEvalId)
    REFERENCES eval (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE INDEX evalTypeid_idx ON eval (evalTypeId ASC) ;
CREATE INDEX parentEvalId_idx ON eval (parentEvalId ASC) ;
CREATE UNIQUE INDEX authoredContentId_UNIQUE ON eval (authoredContentId ASC) ;`

我的用例:我已经在表中插入了id = 2的记录。我想更新记录并获取更新的行ID。但是,在这种情况下,不需要任何更新。我仍然想要获取受影响的行ID。

`rows ::  { fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }`

如图所示,我的insertId = 0,但我希望它是2.有没有办法弄清楚在更新过程中哪个ID受到影响,即使没有任何必须更新的列。

P.S - 我需要解决这个问题,因为我必须递归地运行我的更新。

0 个答案:

没有答案