sql >> Databáze >  >> RDS >> Mysql

Provádění příkazu shellu z MySQL

To není ani tak odpověď na otázku, jako spíše ospravedlnění pro tento druh funkčnosti – proto negovat ty, kteří by řekli „měli byste dělat něco jiného“ nebo „proč byste chtěli“.

Mám databázi, na které se snažím dodržovat přísná pravidla - sirotky nikde nechci. S tím mi pomáhají kontroly referenční integrity na úrovni tabulky, ale některá data musím uchovávat jako soubory v rámci souborového systému (je to důsledek přímého příkazu mého šéfa neukládat žádná binární data do samotné databáze).

Zřejmým řešením je mít spouštěč, který se spustí při smazání záznamu, který pak automaticky smaže přidružený externí soubor.

Nyní si uvědomuji, že UDF může poskytnout řešení, ale zdá se, že je to hodně práce v C/C++, která jednoduše smaže soubor. Jistě by alespoň nějaká poskytla samotná databázová oprávnění zabezpečení před případnými útočníky.

Teď si uvědomuji, že bych mohl napsat skript shellu nebo něco podobného, ​​který by mohl smazat záznam tabulky a pak jít a odstranit související soubor, ale znovu, to je mimo doménu databáze samotné . Jak mi jednou řekl starý instruktor "pravidla podnikání by se měla odrážet v pravidlech databáze". Jak je jasně vidět, nemohu to vynutit pomocí MySQL.



  1. Pořízení záznamu s maximálním datem

  2. Spojení dvou tabulek SQL

  3. Již existuje otevřený DataReader ... i když není

  4. Python seznam parametru String to SQL IN