sql >> Base de Datos >  >> RDS >> Mysql

Ejecutando comando de shell desde MySQL

Esto no es tanto una respuesta a la pregunta como una justificación para este tipo de funcionalidad, por lo tanto, niega a aquellos que dirían "deberías hacer otra cosa" o "por qué querrías hacerlo".

Tengo una base de datos en la que estoy tratando de mantener reglas estrictas:no quiero huérfanos en ningún lado. Las verificaciones de integridad referencial me ayudan con esto en el nivel de la tabla, pero tengo que mantener algunos de los datos como archivos dentro del sistema de archivos (esto es el resultado de una orden directa de mi jefe de no almacenar ningún dato binario en la base de datos).

La solución obvia aquí es tener un activador que se active al eliminar un registro, que luego elimina automáticamente el archivo externo asociado.

Ahora, me doy cuenta de que los UDF pueden proporcionar una solución, pero eso parece mucho trabajo de C/C++ para simplemente eliminar un archivo. Seguramente los propios permisos de la base de datos proporcionarían al menos algunos seguridad de posibles asaltantes.

Ahora, me doy cuenta de que podría escribir un script de shell o algo similar que podría eliminar el registro de la tabla y luego ir y eliminar el archivo relacionado, pero nuevamente, eso está fuera del dominio de la base de datos misma . Como me dijo una vez un viejo instructor, "las reglas del negocio deben reflejarse en las reglas de la base de datos". Como se puede ver claramente, no puedo hacer cumplir esto usando MySQL.