sql >> Database teknologi >  >> RDS >> Mysql

Udfører shell-kommando fra MySQL

Dette er ikke så meget et svar på spørgsmålet, som det er en begrundelse for denne form for funktionalitet - og dermed afvise dem, der ville sige "du burde gøre noget andet" eller "hvorfor ville du det".

Jeg har en database, som jeg prøver at holde strenge regler for - jeg vil ikke have forældreløse børn nogen steder. Kontrol af referenceintegritet hjælper mig med dette på tabelniveau, men jeg er nødt til at beholde nogle af dataene som filer i filsystemet (dette er et resultat af en direkte ordre fra min chef om ikke at gemme nogen binære data i selve databasen).

Den oplagte løsning her er at have en trigger, der udløses ved sletning af en post, som så automatisk sletter den tilhørende eksterne fil.

Nu er jeg klar over, at UDF'er kan give en løsning, men det virker som en masse C/C++-arbejde blot at slette en fil. Selve databasetilladelserne ville helt sikkert give i det mindste nogle sikkerhed fra potentielle overfaldsmænd.

Nu er jeg klar over, at jeg kunne skrive et shell-script eller sådan noget, som kunne slette tabelposten og derefter gå hen og slette den relaterede fil, men igen, det er uden for databasens domæne selve . Som en gammel instruktør engang sagde til mig "forretningens regler skal afspejles i databasens regler". Som man tydeligt kan se, kan jeg ikke håndhæve dette ved hjælp af MySQL.



  1. problem med mysqli_real_escape_string og dobbelte anførselstegn

  2. oracle add_months-funktion adskiller sig fra Java

  3. Sådan tilføjes en separator til en sammenkædet streng i SQL Server - CONCAT_WS()

  4. SQL Server Passthrough-forespørgsel som grundlag for et DAO-postsæt i Access