Teoreticky by mělo být vše v pořádku, ale vždy existují scénáře, kdy by váš kód mohl selhat.
Například:
a) blind insert
:
INSERT INTO tab_name
VALUES (1, 'b', 'c');
Slepé vložení nastane, když dotaz INSERT neurčuje, které sloupce obdrží vložená data.
Proč je to špatná věc?
Protože se může změnit schéma databáze. Sloupce lze přesouvat, přejmenovávat, přidávat nebo mazat. A když jsou, může se stát jedna ze tří věcí:
Dotaz se nezdaří. Toto je nejlepší možný scénář. Někdo odstranil sloupec z cílové tabulky a nyní není dostatek sloupců pro vložení, do kterých by bylo možné vložit, nebo někdo změnil datový typ a vložený typ není kompatibilní nebo tak dále. Ale alespoň se vaše data nepoškozují a možná dokonce víte, že problém existuje kvůli chybové zprávě.
Dotaz nadále funguje a nic není v pořádku. Toto je střední nejhorší scénář. Vaše data nejsou poškozená, ale monstrum se stále skrývá pod postelí.
- Dotaz nadále funguje, ale některá data se nyní vkládají někam, kam nepatří. Vaše data se poškozují.
b) ORDER BY oridinal
SELECT *
FROM tab
ORDER BY 1;