Executes the DELETE query.
int The number of rows affected by the delete query.
Overrides DeleteQuery::execute
public function execute() {
// When the WHERE is omitted from a DELETE statement and the table being
// deleted has no triggers, SQLite uses an optimization to erase the entire
// table content without having to visit each row of the table individually.
// Prior to SQLite 3.6.5, SQLite does not return the actual number of rows
// deleted by that optimized "truncate" optimization. But we want to return
// the number of rows affected, so we calculate it directly.
if (!count($this->condition)) {
$total_rows = $this->connection
->query('SELECT COUNT(*) FROM {' . $this->connection
->escapeTable($this->table) . '}')
->fetchField();
parent::execute();
return $total_rows;
}
else {
return parent::execute();
}
}