A tabela inteira UPDATE
(sem WHERE
cláusula de especificação ) bloqueia uma tabela no PostgreSQL? Por exemplo, impede que as linhas sejam excluídas / inseridas?
Por exemplo, se eu executar
UPDATE t1 SET key = 'value'
Posso esperar que nenhuma nova linha seja inserida t1
durante a UPDATE
execução?
Se não, posso esperar UPDATE
que atualize até as linhas exibidas após o início? (chave não possui DEFAULT 'value'
em sua definição)
postgresql
locking
origaminal
fonte
fonte
UPDATE
ser implementado dessa maneira para atualizar as linhas recém-inseridas.Respostas:
Uma UPDATE sem uma cláusula WHERE bloqueará todas as linhas da tabela, mas não bloqueará a própria tabela para DML.
As linhas não podem ser excluídas de uma transação diferente porque estão bloqueadas.
Mas você pode inserir novas linhas sem problemas (supondo que elas não violem nenhuma restrição).
Qualquer linha inserida após o UPDATE não será vista pela instrução UPDATE e, portanto, não será alterada.
fonte
UPDATE
semWHERE
.