什么是下拉列表的回滚:
- changeSet:
id: 1
author: vikas
changes:
- sql:
sql: DROP TABLE IF EXISTS `adapter`
对于上面的变更集,我应该放什么回滚。
当我试图回滚而没有rollback标记时,我遇到了以下错误:
Error setting up or running Liquibase: liquibase.exception.RollbackImpossibleException: No inverse to liqui
我打算创建几个数据库,并将权限授予相应的用户。例如,
CREATE DATABASE DB1;
GRANT .. ON .. TO DB1;
CREATE DATABASE DB2;
GRANT .. ON .. TO DB2;
CREATE DATABASE DB3;
GRANT .. ON .. TO DB3;
但是我想这样做,如果这条语句中的任何一条语句失败,前面的所有语句,如"CREATE DATABASE“或"GRANT ...”应该像事务语句的回滚一样取消
这个是可能的吗?
我在表A上有一个delete触发器,它从表B中删除。我正在测试触发器失败时会发生什么,为此我重新命名了表B,这样触发器就找不到它了。
这些是我的正常步骤:
begin transaction
delete from C
delete from A -- this errors for reason mentioned
-- At this point the transaction is automatically rolled-back.
然而,如果我这样做的话:
begin transaction
delete from C
delete from B -- this errors for
我工作的公司专门为所有数据库交互、选择、更新、删除使用存储过程(和一个本地的ORM)。
我们有许多procs将从表中插入和/或更新和/或删除。
当需要对整个proc进行“事务化”时,显然需要有我们的commit和rollback语句。
问题从何而来。
当一个事务中有多个语句需要一起提交或回滚时,我们显然会抛出一个try/catch块。
让我们假设脚本的这个示例场景:
set nocount on
create table #test
(
id int primary key identity(1,1),
col varchar(2) not null,
y int n