function Truncate::execute

Same name in this branch
  1. 11.x core/modules/pgsql/src/Driver/Database/pgsql/Truncate.php \Drupal\pgsql\Driver\Database\pgsql\Truncate::execute()
Same name in other branches
  1. 9 core/modules/pgsql/src/Driver/Database/pgsql/Truncate.php \Drupal\pgsql\Driver\Database\pgsql\Truncate::execute()
  2. 9 core/lib/Drupal/Core/Database/Query/Truncate.php \Drupal\Core\Database\Query\Truncate::execute()
  3. 8.9.x core/lib/Drupal/Core/Database/Driver/pgsql/Truncate.php \Drupal\Core\Database\Driver\pgsql\Truncate::execute()
  4. 8.9.x core/lib/Drupal/Core/Database/Query/Truncate.php \Drupal\Core\Database\Query\Truncate::execute()
  5. 10 core/modules/pgsql/src/Driver/Database/pgsql/Truncate.php \Drupal\pgsql\Driver\Database\pgsql\Truncate::execute()
  6. 10 core/lib/Drupal/Core/Database/Query/Truncate.php \Drupal\Core\Database\Query\Truncate::execute()

Executes the TRUNCATE query.

In most cases, TRUNCATE is not a transaction safe statement as it is a DDL statement which results in an implicit COMMIT. When we are in a transaction, fallback to the slower, but transactional, DELETE. PostgreSQL also locks the entire table for a TRUNCATE strongly reducing the concurrency with other transactions.

Return value

int|null Return value is dependent on whether the executed SQL statement is a TRUNCATE or a DELETE. TRUNCATE is DDL and no information on affected rows is available. DELETE is DML and will return the number of affected rows. In general, do not rely on the value returned by this method in calling code.

Overrides Query::execute

See also

https://learnsql.com/blog/difference-between-truncate-delete-and-drop-t…

1 call to Truncate::execute()
Truncate::execute in core/modules/pgsql/src/Driver/Database/pgsql/Truncate.php
Executes the TRUNCATE query.
1 method overrides Truncate::execute()
Truncate::execute in core/modules/pgsql/src/Driver/Database/pgsql/Truncate.php
Executes the TRUNCATE query.

File

core/lib/Drupal/Core/Database/Query/Truncate.php, line 52

Class

Truncate
General class for an abstracted TRUNCATE operation.

Namespace

Drupal\Core\Database\Query

Code

public function execute() {
    $stmt = $this->connection
        ->prepareStatement((string) $this, $this->queryOptions, TRUE);
    try {
        $stmt->execute([], $this->queryOptions);
        return $stmt->rowCount();
    } catch (\Exception $e) {
        $this->connection
            ->exceptionHandler()
            ->handleExecutionException($e, $stmt, [], $this->queryOptions);
    }
    return NULL;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.