Existe algum utilitário / função no mysql / oracle que impeça que eu emita algum comando de exclusão/atualização incorretamente, uma mensagem deve ser exibida em command_line* (se possível no ubuntu) perguntando se "você tem certeza de executar este comando", se sim, exclua O comando /update será executado?
Eu pesquisei isso, mas nenhuma solução específica é fornecida para isso. Eu tentei SOURCE também, mas não é exatamente o que eu quero.
Alguém tem alguma ideia sobre isso?
Se estou prestes a disparar o comando de atualização em > 100.000 registros, deve aparecer um prompt perguntando "você realmente deseja executar?", como no Unix, se usarmos rm filename, ele pergunta se você tem certeza de que deseja excluir ?
Não existe um comando de exclusão ou atualização "errado", a menos que seja "errado" no sentido de ser sintaticamente inválido, referenciar objetos inexistentes ou tentar algo para o qual o usuário não tem permissão ... e esses não são t vai executar de qualquer maneira.
Então você deve estar falando de algo assim:
Não há como o sistema adivinhar corretamente "ei, isso parece errado" e pedir para você repensar sua decisão. O trabalho do DBMS é fazer o que você pede da maneira mais otimizada, e não questionar se você sabe o que está fazendo.
O MySQL tem um modo que tenta protegê-lo, impedindo-o de executar atualizações ou exclusões que não estão usando um índice para encontrar linhas, com o
--i-am-a-dummy
sinalizador que habilitasql_safe_updates
por conexão - ou você pode habilitar essa configuração em um nível global no servidor.Eu diria que isso corrige o problema errado, que é que você tem privilégios concedidos a pessoas que elas não estão qualificadas para manter.
Você poderia, é claro, desabilitar autocommit , exigindo que você digite
COMMIT;
para realmente confirmar suas alterações DML no banco de dados, mas isso só é verdadeiro e totalmente útil se você estiver usando exclusivamente um mecanismo de armazenamento transacional como InnoDB, e não MyISAM, então eu não não sei o quanto isso resolve.Aqueles abençoados com preguiça extra descobrirão que podem digitar
; COMMIT;
no final de cada instrução (verdadeiro nomysql
cli, não universalmente).A pessoa que é conscienciosa o suficiente para pensar antes de cometer provavelmente é conscienciosa o suficiente para não digitar perguntas que não fazem sentido.
Você pode usar
A seguir está a sintaxe para criar um gatilho no MySQL:
CRIAR GATILHO { ANTES | DEPOIS } { INSERIR | ATUALIZAÇÃO | DELETE } ON <nome da tabela>
FOR EACH ROW <ação acionada>