2015-03-24 12:31 GMT-03:00 Zan <[email protected]>: > ALTER TABLE portal.tb_tarefa > ADD COLUMN id_usuario INTEGER; > > Esta é uma tabela pequena, com 200 registros, mas o comando não executa. > Já percebi que algumas vezes quando faço um select em uma tabela com > transação ativa a tabela fica em "Lock", não deixa eu fazer alteração na > estrutura. > > Como saber quem está travando a tabela de alguma forma para impedir que > seja feita qualquer alteração na tabela? >
Um ALTER TABLE para adicionar coluna requer um bloqueio exclusivo (AccessExclusiveLock) na tabela, que é o mais restritivo. Isso significa que qualquer transação, mesmo que somente com um SELECT, esteja usando a tabela, o ALTER TABLE ficará bloqueado, e consequentemente, quando este pegar o bloqueio, as demais transações que ficarão bloqueadas. Veja que apesar disso, essa é uma operação quase instância (apenas algumas atualizações de catálogo), e não há rescrita da tabela, então o tamanho desta não importa. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
