Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Executando o comando shell do MySQL


Isso não é tanto uma resposta para a pergunta, mas uma justificativa para esse tipo de funcionalidade - portanto, negando aqueles que diriam "você deveria fazer outra coisa" ou "por que você desejaria".

Eu tenho um banco de dados no qual estou tentando manter regras estritas - não quero órfãos em nenhum lugar. As verificações de integridade referencial me ajudam com isso no nível da tabela, mas tenho que manter alguns dos dados como arquivos dentro do sistema de arquivos (isso é resultado de uma ordem direta do meu chefe para não armazenar dados binários no próprio banco de dados).

A solução óbvia aqui é ter um gatilho que seja acionado na exclusão de um registro, que exclui automaticamente o arquivo externo associado.

Agora, eu percebo que UDFs podem fornecer uma solução, mas isso parece muito trabalho C/C++ para simplesmente excluir um arquivo. Certamente as próprias permissões do banco de dados forneceriam pelo menos algumas segurança de pretensos assaltantes.

Agora, eu percebo que eu poderia escrever um script de shell ou algo assim que poderia excluir o registro da tabela e, em seguida, excluir o arquivo relacionado, mas, novamente, isso está fora do domínio do banco de dados próprio . Como um antigo instrutor me disse uma vez "as regras do negócio devem ser refletidas nas regras do banco de dados". Como se pode ver claramente, não posso impor isso usando o MySQL.