【问题标题】:Will PDO's LastInsertID Break AWS Replication?PDO 的 LastInsertID 会破坏 AWS 复制吗?
【发布时间】:2018-09-04 11:44:04
【问题描述】:

PDO lastinsertid 函数是否使用 MySQL 的 last_insert_id 函数?

我对使用AWS 进行复制以及根据 AWS manual 使用一些 MySQL 函数中断复制特别感兴趣:

可能导致复制错误的其他常见情况包括:...使用不安全的非确定性查询

mysqlmanual 声明我使用的函数实际上并不安全:

非确定性函数不被认为是不安全的

我计划重写我的now() 用法,但我不确定如何避免last_insert_id,因为 PDO,而不是我,正在查询它。我不能单独使用select,因为insert 很可能是并行运行的,我会取回错误的 ID。

【问题讨论】:

标签: mysql amazon-web-services pdo database-replication last-insert-id


【解决方案1】:

MySQL 的LAST_INSERT_ID() 函数、各种绑定(如 PDO)和底层功能是确定性的。您可以放心使用它们。

例如,这是确定性的,可以在任何地方工作。

  INSERT INTO master (address, town) VALUES('150 Broadway', 'New York');
  INSERT INTO detail (master_id, item) VALUES (LAST_INSERT_ID(), 'pepperoni pizza');

这不是。这是你被警告过的那种事情。

  INSERT INTO master (address, town) VALUES('150 Broadway', 'New York');
  SELECT @id := MAX(master_id) FROM master;   /* bad bad bad */
  INSERT INTO detail (master_id, item) VALUES (@id + 1 'pepperoni pizza');

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 2011-08-21
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多