Posso impedir que DROP COLUMN seja bem-sucedido em tabelas específicas no PostgreSQL 9 ou 10 ou posterior?
Meu aplicativo faz algumas suposições sobre colunas serem eternas, não desaparecendo. Tenho medo de programadores posteriores esquecerem essa restrição.
Eu sei que gatilhos podem ser acionados para controlar INSERT, MODIFY e DELETE de linhas. Mas e o DDL ? Posso me proteger contra certas mudanças na estrutura da tabela?
A segurança pode ser uma maneira, atribuindo permissões a usuários e funções. Mas esses futuros programadores terão permissão para adicionar colunas, apenas a eliminação de colunas é proibida.
Não estou preocupado com atividades maliciosas. Estou me defendendo contra os castores ansiosos que podem se mover rápido demais para se lembrar do quadro maior.
Acionadores de eventos
Existem gatilhos de eventos para controlar DDLs, interceptando o evento
sql_drop
.Ligue
CREATE EVENT TRIGGER
. Na função de gatilho, verifique se o objeto que está sendo descartado é uma de suas colunas importantes. Em caso afirmativo, levante a exceção para a transação de reversão.Exemplo:
Mais documentos: Funções de
eventos