diff --git a/lib/private/DB/AdapterOCI8.php b/lib/private/DB/AdapterOCI8.php index 81d3e38d778..06ba1ecfa41 100644 --- a/lib/private/DB/AdapterOCI8.php +++ b/lib/private/DB/AdapterOCI8.php @@ -28,8 +28,8 @@ class AdapterOCI8 extends Adapter { $statement = str_ireplace('UNIX_TIMESTAMP()', self::UNIX_TIMESTAMP_REPLACEMENT, $statement); $statement = preg_replace( - '/^INSERT INTO (.*) VALUES (.*) INTO (.*)$/', - 'INSERT INTO ${1} VALUES ${2} RETURNING pk_id INTO ${3}', + '/^INSERT INTO (".*")( ?\(.*) ?VALUES( ?\(.*)$/', + 'DECLARE vRowid ROWID; BEGIN INSERT INTO ${1} VALUES ${2} RETURNING ROWID INTO vRowid dbms_output.put_line(vRowid); END', $statement ); diff --git a/lib/private/DB/OracleConnection.php b/lib/private/DB/OracleConnection.php index 076e6f1cc44..dd80d531018 100644 --- a/lib/private/DB/OracleConnection.php +++ b/lib/private/DB/OracleConnection.php @@ -97,7 +97,7 @@ class OracleConnection extends Connection { $returned = parent::executeStatement($sql, $params, $types); var_dump($sql); - if (preg_match('/^INSERT INTO (.*) VALUES (.*) INTO (.*)$/', $sql, $matches)) { + if (preg_match('/^DECLARE vRowid ROWID; BEGIN INSERT INTO (.*) VALUES (.*) INTO (.*)$/', $sql, $matches)) { var_dump($returned); $this->lastInsertId[$matches[1]] = $returned; var_dump($this->lastInsertId);