Mám dávať do DB úplnú kontrolu údajov? Mám na mysli kompletne zopakovať kontroly, ktoré vykonávam na klientovi. Predpokladám odpoveď ÁNO.
V podstate ano, ale nepristupoval bych k tomu jako k duplikovani (coz konotuje praci navic, praci zbytecnou apod.).
Spravne je nejdriv navrhnout databazovy model a vytvorit databazi. A volit kontroly a opatreni tak, aby strikaci, co k te databazi budou delat pozdeji ksichty, ji nemohli moc ublizit a zajistit, aby byla stale v logicky konzistentnim stavu.
Chcem si upresniť. Commit sa používa len SP a spúšťach. Možno UDF? Príkazy Post, Delete, Insert a Update vykonávané z kleinta pomocou komponent to nevyžadujú.
Ne. Commit je potvrzeni transakce a strikaci zhusta pouzivaji rezim s implicitnim rizenim transakci tzv. AutoCommit, kde se o to nestaraji, transakce se sami zahajuji a ukoncuji. Ale to je pristup: "neotravuj me s transakcema, stejne nevim k cemu jsou dobry". Jejich programy pak nikdy spravne nepracuji v paralelnim prostredi atd. IMHO by sis mel o transakcich neco precist a mel bys je explicitne ridit tj. zvolit typ transakce, jeji izolace, tu nastartovat, potvrdit a osetrit ji pomoci try-except s vhodnou zotavovaci akci. Smyslem transakce je zajistit, aby se nekolik SQL prikazu/operaci provedlo jako jedina tj. neprerusitelna akce, ktera se bud povede cela, nebo se cela zrusi.
SP a triggery pracuji v ramci (uvnitr) nejake transakce jako kterykoli jiny SQL prikaz. UDF = User Defined Function tj. neni to SQL prikaz ale jen funkce, kterou si napises v nejakem normalnim jazyku podle presnych pravidel a SQL server ti ji umozni ve tvych SQL prikazech pouzivat.