I teorien burde alt være fint, men der er altid scenarier, hvor din kode kan fejle.
For eksempel:
a) blind insert
:
INSERT INTO tab_name
VALUES (1, 'b', 'c');
En blind indsættelse er, når en INSERT-forespørgsel ikke angiver, hvilke kolonner der modtager de indsatte data.
Hvorfor er det en dårlig ting?
Fordi databaseskemaet kan ændre sig. Kolonner kan flyttes, omdøbes, tilføjes eller slettes. Og når de er det, kan en af mindst tre ting ske:
-
Forespørgslen mislykkes. Dette er det bedste scenario. Nogen slettede en kolonne fra måltabellen, og nu er der ikke nok kolonner til, at indsættelsen kan gå ind i, eller nogen har ændret en datatype, og den indsatte type er ikke kompatibel, eller så videre. Men dine data bliver i det mindste ikke ødelagt, og du ved måske endda, at problemet eksisterer på grund af en anerror-meddelelse.
-
Forespørgslen fortsætter med at fungere, og der er ikke noget galt. Dette er et middel-worst case-scenarie. Dine data er ikke korrupte, men monsteret gemmer sig stadig under sengen.
- Forespørgslen fortsætter med at fungere, men nu bliver nogle data indsat et sted, hvor de ikke hører hjemme. Dine data bliver ødelagt.
b) ORDER BY oridinal
SELECT *
FROM tab
ORDER BY 1;