如果我使用了正确的术语,请纠正我:“全局影响”我的意思是,如果我增加序列值,所有其他正在运行的事务都会增加它而无需提交....
我知道序列有这种行为,但我怀疑是否有一个包含一些其他角色的列表,这些角色在全球范围内受到影响,如果我在事务中更新它?
例如,如果我设置alter table mytable enable trigger all;这只会影响本地事务或其他事务中的触发行为,请注意,这只是一个示例,我正在考虑很多其他需要仔细考虑的事情。
如果我使用了正确的术语,请纠正我:“全局影响”我的意思是,如果我增加序列值,所有其他正在运行的事务都会增加它而无需提交....
我知道序列有这种行为,但我怀疑是否有一个包含一些其他角色的列表,这些角色在全球范围内受到影响,如果我在事务中更新它?
例如,如果我设置alter table mytable enable trigger all;这只会影响本地事务或其他事务中的触发行为,请注意,这只是一个示例,我正在考虑很多其他需要仔细考虑的事情。
alter table mytable enable trigger all;
不能直接影响并发事务,因为该命令在应用更改之前对表进行了独占锁定。锁一直保持到事务结束。(当然,锁本身可以对并发事务产生间接影响。)COMMIT
之前(甚至之后ROLLBACK
)并发事务可见的一些效果:ROLLBACK
,因为准备好的语句仅在同一会话中可见)。VACUUM
执行它的工作,因为无法删除快照中仍然可能可见的行。在非常极端的情况下甚至会导致交易 ID 回绕。(好吧,其他安全措施会在实际发生之前启动。)我相信还有更多......
有些命令根本不能在事务内执行。喜欢
CREATE DATABASE
,CREATE INDEX CONCURRENTLY
或者VACUUM
。有关的: