sql >> Database >  >> RDS >> Mysql

Shell-opdracht uitvoeren vanuit MySQL

Dit is niet zozeer een antwoord op de vraag, maar het is een rechtvaardiging voor dit soort functionaliteit - en negeert dus degenen die zouden zeggen "je zou iets anders moeten doen" of "waarom zou je dat willen".

Ik heb een database waar ik strikte regels aan probeer te houden - ik wil nergens wezen. Referentiële integriteitscontroles helpen me hierbij op tabelniveau, maar ik moet sommige gegevens als bestanden in het bestandssysteem bewaren (dit is het resultaat van een direct bevel van mijn baas om geen binaire gegevens in de database zelf op te slaan).

De voor de hand liggende oplossing hier is om een ​​trigger te hebben die wordt geactiveerd bij het verwijderen van een record, die vervolgens automatisch het bijbehorende externe bestand verwijdert.

Nu realiseer ik me dat UDF's misschien een oplossing bieden, maar dat lijkt veel C/C++-werk om eenvoudig een bestand te verwijderen. De databaserechten zelf zouden zeker minstens sommige . bieden beveiliging tegen mogelijke aanvallers.

Nu realiseer ik me dat ik een shellscript of iets dergelijks zou kunnen schrijven dat het tabelrecord zou kunnen verwijderen en vervolgens het gerelateerde bestand zou kunnen verwijderen, maar nogmaals, dat is buiten het domein van de database zelf . Zoals een oude instructeur me ooit vertelde "de regels van het bedrijf moeten worden weerspiegeld in de regels van de database". Zoals men duidelijk kan zien, kan ik dit niet afdwingen met MySQL.



  1. Waarom is SELECT zonder kolommen geldig?

  2. Hoe een boolen in refcursor retourneren?

  3. INNER JOIN gebruiken om SQL Server-tabellen te combineren en weer te geven in ASP.NET-webformulieren

  4. Hoe in een wachtrij te plaatsen op Oracle AQ-tabel bij commit met Java en consumeren met een JMS-client?