PDO lastinsertid
函数是否使用 MySQL 的 last_insert_id
函数?
我对使用 AWS
并按照 AWS manual 进行复制特别感兴趣使用一些 MySQL 函数会中断复制:
Other common situations that can cause replication errors include the following:...Using unsafe nondeterministic queries
mysql
manual声明我使用的函数实际上并不是不安全的:
Nondeterministic functions not considered unsafe
我计划重写我的 now()
用法,但不确定如何避免 last_insert_id
因为 PDO,而不是我,正在查询它。我无法执行单独的 select
,因为很可能 insert
是并行运行的,我会得到错误的 id。
最佳答案
MySQL 的 LAST_INSERT_ID()
函数、各种绑定(bind)(如 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');
关于mysql - PDO 的 LastInsertID 会破坏 AWS 复制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165565/