[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-kak-rabotaet-rollback-v-liquibase":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},956,"kak-rabotaet-rollback-v-liquibase",29,"liquibase","Liquibase","💧","Как работает rollback в Liquibase?","Rollback — это механизм отката изменений, внесённых changeset-ами. Liquibase поддерживает автоматический и ручной rollback.\n\n### Автоматический rollback\n\nДля многих типов изменений Liquibase генерирует обратные операции автоматически:\n\n| Изменение | Автоматический rollback |\n|---|---|\n| `createTable` | `dropTable` |\n| `addColumn` | `dropColumn` |\n| `createIndex` | `dropIndex` |\n| `addForeignKeyConstraint` | `dropForeignKeyConstraint` |\n| `createView` | `dropView` |\n| `createSequence` | `dropSequence` |\n| `renameTable` | `renameTable` (обратное) |\n\n### Ручной rollback\n\nДля операций, которые Liquibase не может откатить автоматически (например, `dropTable`, `sql`, `insert`), необходимо указать rollback вручную:\n\n```xml\n\u003CchangeSet id=\"9\" author=\"petrov\">\n    \u003CdropColumn tableName=\"users\" columnName=\"middle_name\"\u002F>\n\n    \u003Crollback>\n        \u003CaddColumn tableName=\"users\">\n            \u003Ccolumn name=\"middle_name\" type=\"VARCHAR(100)\"\u002F>\n        \u003C\u002FaddColumn>\n    \u003C\u002Frollback>\n\u003C\u002FchangeSet>\n```\n\nДля SQL-формата:\n\n```sql\n--changeset petrov:10\nALTER TABLE users ADD COLUMN status VARCHAR(20) DEFAULT 'ACTIVE';\n--rollback ALTER TABLE users DROP COLUMN status;\n```\n\n### Команды rollback\n\n```bash\n# Откат последних N changeset-ов\nliquibase rollbackCount 1\n\n# Откат до определённого тега\nliquibase rollback release-1.0\n\n# Откат до определённой даты\nliquibase rollbackToDate 2025-01-15T10:00:00\n\n# Генерация SQL для отката (без выполнения)\nliquibase rollbackCountSQL 1\nliquibase rollbackSQL release-1.0\n```\n\nРекомендуется **всегда** явно указывать rollback для changeset-ов, даже если Liquibase может сгенерировать его автоматически — это делает миграции более предсказуемыми.\n\n> **На собеседовании:** важно знать разницу между автоматическим и ручным rollback, а также уметь назвать команды отката. Частая ошибка — не упомянуть, что для деструктивных операций (drop, sql) rollback нужно писать вручную.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Как работает rollback в Liquibase? — Gymterview","Rollback — это механизм отката изменений, внесённых changeset-ами. Liquibase поддерживает автоматический и ручной rollback.","Rollback — это механизм отката изменений, внесённых changeset-ами. Liquibase поддерживает автоматический и ручной rollba",[7,13],true]