理論的にはすべてがうまくいくはずですが、コードが失敗する可能性があるシナリオは常にあります。
例:
a)blind insert
:
INSERT INTO tab_name
VALUES (1, 'b', 'c');
ブラインド挿入とは、INSERTクエリで挿入されたデータを受け取る列が指定されていない場合です。
なぜこれが悪いのですか?
データベーススキーマが変更される可能性があるためです。列は、移動、名前変更、追加、または削除できます。そして、そうなると、少なくとも3つのことが起こります。
クエリは失敗します。これが最良のシナリオです。誰かがターゲットテーブルから列を削除しましたが、挿入するのに十分な列がないか、誰かがデータ型を変更して挿入された型に互換性がないなどです。ただし、少なくともデータが破損することはなく、エラーメッセージが原因で問題が存在することさえわかっているかもしれません。
クエリは引き続き機能し、何も問題はありません。これは、中程度の最悪のシナリオです。データは破損していませんが、モンスターはまだベッドの下に隠れています。
- クエリは引き続き機能しますが、現在、一部のデータが属していない場所に挿入されています。データが破損しています。
b)ORDER BY oridinal
SELECT *
FROM tab
ORDER BY 1;