Bla*_*laM 6 php mysql auto-increment lastinsertid mysql-insert-id
我总是听说使用"lastInsertId"(或者如果你不使用PDO,则使用mysql_insert_id())是邪恶的.在触发器的情况下,它显然是,因为它可以返回一些完全不是INSERT创建的最后一个ID.
$DB->exec("INSERT INTO example (column1) VALUES ('test')");
// Usually returns your newly created ID.
// However when a TRIGGER inserts into another table with auto-increment:
// -> Returns newly created ID of trigger's INSERT
$id = $DB->lastInsertId();
Run Code Online (Sandbox Code Playgroud)
有什么选择?
如果您采用 ADOdb ( http://adodb.sourceforge.net/ )的路线,那么您可以预先创建插入 ID ,并在插入时显式指定 ID。这可以移植地实现(ADOdb 支持大量不同的数据库...)并保证您使用正确的插入 ID。
PostgreSQL SERIAL 数据类型类似,只是它是按表/按序列的,您可以在请求时指定想要最后插入 ID 的表/序列。