sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor ignoreres prik-separerede præfikser i kolonnelisten for INSERT-sætninger?

Det er usandsynligt at være en del af SQL-standarden, givet dens tvivlsomme nytte (selvom jeg ikke har tjekket specifikt ).

Det, der højst sandsynligt sker, er, at det smider den ikke-endelige del af kolonnespecifikationen væk, fordi den er overflødig. Du har eksplicit angivet hvilken tabel du indsætter i, med insert into SomeTable del af kommandoen, og det er den tabel, der vil blive brugt.

Det, du ser ud til at have gjort her, er at finde en måde at udføre SQL-kommandoer, der er mindre læsbare, men som ikke har nogen reel fordel. På den måde ligner det C-koden:

int ni =9;int otte =8;xyzzy =xyzzy + ni - otte; 

som måske bedre kunne skrives som xyzzy++; :-)

Jeg ville slet ikke stole på det, muligvis fordi det ikke er standard, men for det meste fordi det gør vedligeholdelse sværere end nemmere, og fordi jeg ved, at DBA'er over hele verden ville spore mig og slå mig ihjel med IBM DB2 manualer, deres valg af våben på grund af den omfangsrige størrelse og kranieknusende evner :-)

Jeg har kontrolleret uspecifikt, i det mindste for ISO 9075-2:2003, som dikterer SQL03-sproget.

Afsnit 14.8 af denne standard dækker insert erklæring, og det ser ud til, at følgende klausul kan være relevant:

Uden at bruge en enorm mængde tid (det dokument er 1.332 sider langt og ville tage flere dage at fordøje ordentligt), formoder jeg, at du kunne argumentere for, at kolonnen kunne identificeres blot ved at bruge den sidste del af kolonnenavnet (ved at fjerne alle ejer/bruger/skemaspecifikationer fra det).

Især da det ser ud til, at kun én måltabel er mulig (opdaterbare visninger krydser tabelgrænser på trods af):

::=

Retfærdig advarsel:Jeg har ikke tjekket senere gentagelser af standarden, så tingene kan have ændret sig. Men jeg ville betragte det som usandsynligt, da der ikke ser ud til at være nogen reel use case for at have denne funktion.



  1. Datareplikering i IRI Workbench

  2. Mysql inden for afstand forespørgsel

  3. Array - Indsæt array-værdier til mysql-tabellen

  4. Oracle Delete Statement:hvor mange rækker er blevet slettet ved kaskadesletning