DBI 文档指出:
当行数未知、不适用或不可用时,do() 方法返回 -1。
这是否意味着只有在特定行或表不存在或存在更多可能原因的情况下才会返回-1。
对于行数不适用的方法,例如CREATE
or ,它将返回 -1 ALTER TABLE
。
它将返回 -1,其中 a) 受影响的行不适用(例如,@simbabque 所说的 create、alter 语句不会改变任何行) b) 驱动程序不知道受影响的行(因此它是一个插入/更新/删除,但由于某种原因驱动程序不知道 - 在 pod 中不可用)。并非所有 DBD 都能告诉您所有删除/插入/更新语句中受影响的行,这取决于 DBD,有时取决于它使用的 DB API,有时取决于 DBMS 本身。
不要将 select 语句放在 do 方法调用中。将 do 的返回视为“受影响的行数” - select 语句通常没有影响,无论如何它们在 do 中毫无意义。