On Mon, Feb 5, 2024, at 1:54 PM, Saki Takamachi wrote:
> 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.

I like this proposal.  It's a good incremental improvement to PDO.  I also 
agree with rollbackTo(), to avoid confusion.

--Larry Garfield

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

Reply via email to