Это зависит от того, что вы подразумеваете под транзакцией .Существует два типа транзакций:
- Неявные транзакции: как в операторах
INSERT
, UPDATE
, SELECT
, DELETE
, и в таких операторах естьнет явных команд транзакции, и ядро базы данных выполнит откат всего оператора, если произойдет ошибка. - Явные транзакции: в таком случае выполняются вложенные операторы внутри транзакциикак единое целое и
COMMIT
всей транзакции или ROLLBACK
.
Таким образом, вы не можете иметь как SELECT
, так и UPDATE
внутри одного запроса, но вы можете использовать их внутритранзакции, такие как:
START TRANSACTION;
SELECT * FROM tableName;
UPDATE table SET something = 'other something' WHERE thirdsomething = @s;
COMMIT;
Затем поместите их в хранимую процедуру или в UDF.
Обратите внимание: операторы SELECT
не изменяют данные, поэтому вы можетене нужно заключать его в транзакцию, поэтому в вашем случае у вас будет только UPDATE
заявление, что вы можете просто использовать хранимую процедуру без транзакции.