Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que os prefixos separados por pontos são ignorados na lista de colunas para instruções INSERT?


É improvável para fazer parte do padrão SQL, dada sua utilidade duvidosa (embora eu não tenha verificado especificamente ).

O que provavelmente está acontecendo é que está jogando fora a parte não final da especificação da coluna porque é supérflua. Você tem explicitamente declarou em qual tabela você está inserindo, com o insert into SomeTable parte do comando, e é a tabela que será utilizada.

O que você parece ter feito aqui é encontrar uma maneira de executar comandos SQL que são menos legíveis, mas não têm nenhuma vantagem real. Nesse sentido, parece semelhante ao código C:
int nine = 9;
int eight = 8;
xyzzy = xyzzy + nine - eight;

que talvez poderia ser melhor escrito como xyzzy++; :-)

Eu não confiaria nisso, possivelmente porque não é padrão, mas principalmente porque torna a manutenção mais difícil do que fácil, e porque eu sei que DBAs em todo o mundo me rastreariam e me bateriam até a morte com manuais IBM DB2, sua escolha de arma devido ao tamanho volumoso e habilidades de esmagamento de crânios :-)

Eu tenho verificado não especificamente, pelo menos para ISO 9075-2:2003 que dita a linguagem SQL03.

Seção 14.8 desse padrão abrange o insert declaração e parece que a seguinte cláusula pode ser relevante:

Sem gastar muito tempo (esse documento tem 1.332 páginas e levaria vários dias para ser digerido corretamente), suspeito que você poderia argumentar que a coluna poderia ser identificado apenas usando a parte final do nome da coluna (removendo todas as especificações do proprietário/usuário/esquema dela).

Especialmente porque parece que apenas uma tabela de destino é possível (não obstante as visualizações atualizáveis ​​cruzando os limites da tabela):
<insertion target> ::= <table name>

Aviso justo:não verifiquei as iterações posteriores do padrão, então as coisas podem ter mudado. Mas eu consideraria isso improvável, pois parece não haver um caso de uso real para ter esse recurso.