Я использую транзакцию для внесения изменений в мою базу данных. Таким образом, если что-то не получится во время изменений, я могу откатиться без какого-либо вреда.
Однако, поскольку я выполняю свои запросы на основе списка запросов, который переводит мою базу данных в ее окончательное состояние (в любое время, когда мне нужно внести изменения, я просто добавляю новое правило в список), произойдет сбой при попытке удалить столбец, который был добавлен во время той же транзакции.
Пример:
START TRANSACTION;
ALTER TABLE "servers" ADD COLUMN "test" INTEGER NOT NULL;
ALTER TABLE "servers" DROP COLUMN "test";
COMMIT;
Когда я запускаю это, я получаю что-то вроде
column "test" in the middle of being added, try again later
Я понимаю, почему это происходит, поскольку транзакция еще не зафиксирована, но столбец не существует для удаления. Однако есть ли способ обойти это специально, чтобы я мог отбросить столбец в той же транзакции? Или, по крайней мере, поставить его в очередь для удаления после фиксации транзакции.
Мне кажется, стоит отметить, что запросы, выполняемые внутри транзакции, генерируются с использованием Eloquent ORM Blueprints.