sql >> Database teknologi >  >> RDS >> PostgreSQL

Er id-kolonneposition i Postgresql vigtig?

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:

  1. 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.

  2. 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.

  3. 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;



  1. Hvordan opretter jeg forbindelse til SQL Server via sqlalchemy ved hjælp af Windows-godkendelse?

  2. Adgang til en anden brugers tabel i en Oracle Stored Procedure

  3. Erstat første forekomst af understreng i en streng i SQL

  4. hvordan kalder man en lagret proc fra støvknapper og ændrer refcursor, der returneres?