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

Nějaký důvod, proč nepoužívat uložené procedury pro každý dotaz?

Toto je téměř náboženská diskuse podle toho, koho se ptáte. Existuje křehká rovnováha, kterou musí vývojáři a dbas v těchto typech případů sladit.

Zde je v podstatě myšlenka, kterou chcete skutečně uvést do hry:

Pokud PHP kód používá dynamický SQL, je třeba vždy zvážit ochranu proti útokům SQL injection. Vstupy MUSÍ být před vložením do databáze dezinfikovány.

Pokud PHP kód používá dynamické SQL, ale konvencí je používat připravené příkazy, pak jste do určité míry bezpečnější, ale je třeba věnovat pozornost tomu, jak se připravené příkazy používají.

Pokud kód PHP používá uložené procedury, je vývojářům odebrána velká část kontroly nad SQL a je ponecháno na DBA, aby spolupracoval s vývojáři na poskytnutí adekvátního řešení, které vyhovuje jejich potřebám. To bohužel může způsobit mnoho času a úsilí a přecházení tam a zpět při vývoji/údržbě.

Je to jedna z těch věcí, která je šedou zónou a existuje mnoho myšlenkových škol, která strana rovnice je správná, protože obě jsou z určitých úhlů pohledu.



  1. Udělte oprávnění několika tabulkám se specifickou předponou

  2. dotaz k odstranění všech znaků za poslední čárkou v řetězci

  3. Agent je zablokován

  4. Oracle:rozdíl mezi max(id)+1 a sekvence.nextval