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

È possibile memorizzare codice eseguibile in un record di tabella utilizzando SQL

Potresti? Probabilmente. Praticamente in qualsiasi sistema di database, sarebbe possibile memorizzare una stringa di PL/SQL (per Oracle), T-SQL (per SQL Server), ecc. che potrebbe essere letta ed eseguita dinamicamente in fase di esecuzione.

Dovresti? Quasi certamente no. Costruire questo tipo di dinamismo raramente vale la pena. In genere rende il tuo sistema molto più difficile da capire ed eseguire il debug poiché ora hai bit di codice come dati oltre al codice che probabilmente guarderai effettivamente. Rompe tutti i tipi di buone pratiche di programmazione (separando bit di codice correlato, alcuni dei quali entrano nella base di codice vera e propria e altri bit di cui vengono implementati in righe in una tabella, inevitabilmente ti fa esporre metodi al mondo che vorresti se il sistema è stato progettato correttamente, ecc.) E rende la sicurezza molto più complicata poiché essenzialmente stai creando una meravigliosa vulnerabilità di SQL injection nel tuo sistema. Ottieni molta più flessibilità, ma è piuttosto raro che un sistema utilizzi effettivamente tale flessibilità abbastanza spesso da compensare gli aspetti negativi.