Suponha que eu tenha uma tabela foo
, que contém algumas estatísticas que são calculadas de vez em quando. É muito usado por outras consultas.
É por isso que quero computar estatísticas mais recentes foo_new
e trocá-las quando a computação estiver pronta.
eu poderia fazer
ALTER TABLE foo RENAME foo_tmp;
ALTER TABLE foo_new RENAME foo;
mas o que acontece se uma consulta precisar de uma tabela foo
entre essas duas linhas quando não houver uma tabela foo
? Acho que tenho que bloqueá-lo de alguma forma... ou há outra maneira de fazer isso?
Use este único comando:
É uma operação atômica: ambas as tabelas são bloqueadas juntas (e por um tempo muito curto), portanto, qualquer acesso ocorre antes ou depois do
RENAME
.