Teoretycznie wszystko powinno być w porządku, ale zawsze są sytuacje, w których Twój kod może się nie powieść.
Na przykład:
a) blind insert
:
INSERT INTO tab_name
VALUES (1, 'b', 'c');
Ślepe wstawianie ma miejsce, gdy zapytanie INSERT nie określa, które kolumny otrzymują wstawione dane.
Dlaczego to zła rzecz?
Ponieważ schemat bazy danych może się zmienić. Kolumny można przenosić, zmieniać ich nazwy, dodawać lub usuwać. A kiedy tak się dzieje, może zdarzyć się jedna z co najmniej trzech rzeczy:
-
Zapytanie kończy się niepowodzeniem. To najlepszy scenariusz. Ktoś usunął kolumnę z tabeli docelowej, a teraz nie ma wystarczającej liczby kolumn do wstawienia, lub ktoś zmienił typ danych, a wstawiony typ nie jest zgodny i tak dalej. Ale przynajmniej Twoje dane nie ulegają uszkodzeniu, a możesz nawet wiedzieć, że problem istnieje z powodu komunikatu o błędzie.
-
Zapytanie nadal działa i nic się nie dzieje. To jest środkowy najgorszy scenariusz. Twoje dane nie są uszkodzone, ale potwór wciąż ukrywa się pod łóżkiem.
- Zapytanie nadal działa, ale teraz niektóre dane są wstawiane w miejsce, do którego nie należy. Twoje dane ulegają uszkodzeniu.
b) ORDER BY oridinal
SELECT *
FROM tab
ORDER BY 1;