刷新数据库事务中的物化视图
Refresh a materialized view in database transaction
是否可以在数据库事务中刷新物化视图?
我正在为 laravel 中的复杂查询编写测试用例,它使用事务在测试 运行 后回滚。
当我添加数据并刷新视图时 - 当我执行 select 语句时没有记录出现
如果在事务中刷新物化视图并回滚事务,则视图保持事务前的状态(即不刷新)。您必须提交事务才能完成其所有命令。
示例设置:
create table my_table(id int);
create materialized view mat_view as
select * from my_table;
交易:
begin;
insert into my_table
select i from generate_series(1, 3) i;
refresh materialized view mat_view;
select * from mat_view;
-- inside the transaction the view is refreshed
id
----
1
2
3
(3 rows)
rollback;
交易外:
select * from mat_view;
-- but after rollback the view is empty again
id
----
(0 rows)
是否可以在数据库事务中刷新物化视图?
我正在为 laravel 中的复杂查询编写测试用例,它使用事务在测试 运行 后回滚。
当我添加数据并刷新视图时 - 当我执行 select 语句时没有记录出现
如果在事务中刷新物化视图并回滚事务,则视图保持事务前的状态(即不刷新)。您必须提交事务才能完成其所有命令。
示例设置:
create table my_table(id int);
create materialized view mat_view as
select * from my_table;
交易:
begin;
insert into my_table
select i from generate_series(1, 3) i;
refresh materialized view mat_view;
select * from mat_view;
-- inside the transaction the view is refreshed
id
----
1
2
3
(3 rows)
rollback;
交易外:
select * from mat_view;
-- but after rollback the view is empty again
id
----
(0 rows)