Je to nepravděpodobné být součástí standardu SQL, vzhledem k jeho pochybné užitečnosti (ačkoli jsem to konkrétně nezkontroloval).
Nejpravděpodobněji se děje to, že zahodí nefinální část specifikace sloupce, protože je nadbytečná. Máte explicitně uvedl, do jaké tabulky vkládáte, pomocí insert into SomeTable
část příkazu a to je tabulka, která bude použita.
Zdá se, že jste zde našli způsob, jak provádět příkazy SQL, které jsou méně čitelné, ale nemají žádnou skutečnou výhodu. V tomto duchu vypadá podobně jako kód C:
int nine = 9;
int eight = 8;
xyzzy = xyzzy + nine - eight;
který by možná mohl být lépe napsán jako xyzzy++;
:-)
Vůbec bych na to nespoléhal, možná protože to není standardní, ale většinou protože to dělá údržbu spíše těžší než jednodušší, a protože vím, že by mě správci databází po celém světě vystopovali a ubili k smrti pomocí příruček IBM DB2, jejich volba zbraně kvůli objemné velikosti a schopnosti drtit lebky :-)
Mám zkontrolováno nespecificky, alespoň pro ISO 9075-2:2003, která určuje jazyk SQL03.
Sekce 14.8
tohoto standardu pokrývá insert
a zdá se, že může být relevantní následující klauzule:
Aniž byste strávili obrovské množství času (tento dokument má 1 332 stran a jeho správné strávení by trvalo několik dní), mám podezření, že byste mohli namítnout, že sloupec mohl být identifikován pouze pomocí poslední části názvu sloupce (odstraněním všech specifikací vlastníka/uživatele/schématu).
Zejména proto, že se zdá, že je možná pouze jedna cílová tabulka (bez ohledu na aktualizovatelné pohledy překračující hranice tabulky):
<insertion target> ::= <table name>
Spravedlivé varování:Nezkontroloval jsem pozdější iterace standardu, takže se věci mohly změnit. Ale to bych považoval za nepravděpodobné, protože se zdá, že neexistuje žádný skutečný případ použití této funkce.