Hi Kentaro,

Thank you for your important point.

> While most databases use `SAVEPOINT [name]`, but:
> 
> https://github.com/laravel/framework/blob/v10.43.0/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php#L453-L456
> 
> ```php
> return 'SAVE TRANSACTION '.$name;
> ```
> 
> SQL Server uniquely uses `SAVE TRANSACTION [name]`. There might be
> other variations in databases, so full support could be challenging,
> which is something to be mindful of.

I think this feature will be implemented for each driver, so it probably won't 
be a problem for anything other than pdo_odbc. As you say, I think I need to 
think a little more about pdo_odbc.

(When I looked into odbc3 again, I realized that what I had written was not an 
API for odbc, sorry. Therefore, it may be difficult to support this feature 
stably with ODBC.)

I'll see if there's a better way.

>> change the signature of `rollback()` to `rollback(?string $name = null)`.
> 
> This might lead to confusion due to `rollback()` having multiple
> functionalities, as `ROLLBACK` and `ROLLBACK TO [name]` target
> different rollback operations.
> 
> Just as `beginTransaction()` and `savepoint()` are separate, perhaps
> having a separate method for rolling back to a savepoint might
> maintain consistency, for example `rollbackToSavepoint(string $name)`.

Regarding this, mysqli's `rollback()` is such a specification, so I used that 
as a reference. However, it may be safer to separate the method itself.

`rollbackTo()` might also be good.

Regards.

Saki
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to