Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego przedrostki oddzielone kropkami są ignorowane na liście kolumn dla instrukcji INSERT?

To mało prawdopodobne być częścią standardu SQL, biorąc pod uwagę jego wątpliwą użyteczność (choć specjalnie tego nie sprawdzałem).

Najbardziej prawdopodobne jest to, że odrzuca niekońcową część specyfikacji kolumny, ponieważ jest ona zbędna. Masz wyraźnie określił, do której tabeli wstawiasz, z insert into SomeTable częścią polecenia i to tabela, która będzie używana.

Wygląda na to, że znalazłeś sposób na wykonywanie poleceń SQL, które są mniej czytelne, ale nie mają realnej przewagi. W tym duchu wygląda podobnie do kodu C:

int nine = 9;
int eight = 8;
xyzzy = xyzzy + nine - eight;

który może być lepiej napisany jako xyzzy++; :-)

W ogóle bym na tym nie polegał, prawdopodobnie bo to nie jest standardowe, ale głównie ponieważ sprawia to, że konserwacja jest trudniejsza niż łatwiejsza, i ponieważ wiem, że administratorzy baz danych na całym świecie wyśledziliby mnie i pobiliby na śmierć za pomocą podręczników IBM DB2, ich wybór broni ze względu na obszerny rozmiar i zdolność do miażdżenia czaszek :-)

mam sprawdzone niespecyficznie, przynajmniej dla ISO 9075-2:2003, które dyktuje język SQL03.

Sekcja 14.8 tego standardu obejmuje insert oświadczenie i wydaje się, że następująca klauzula może mieć znaczenie:

Podejrzewam, że bez poświęcania dużej ilości czasu (ten dokument ma 1332 strony, a jego prawidłowe przetworzenie zajęłoby kilka dni), podejrzewam, że można argumentować, że kolumna może być identyfikowane tylko za pomocą ostatniej części nazwy kolumny (poprzez usunięcie z niej wszystkich specyfikacji właściciela/użytkownika/schematu).

Zwłaszcza, że ​​wydaje się, że tylko jedna tabela docelowa jest możliwa (niezależnie od tego, czy można aktualizować widoki przekraczające granice tabeli):

<insertion target> ::= <table name>

Uczciwe ostrzeżenie:nie sprawdzałem późniejszych iteracji standardu, więc wszystko mogło się zmienić. Ale uważam to za mało prawdopodobne, ponieważ wydaje się, że nie ma prawdziwego przypadku użycia tej funkcji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaokrąglanie dziesiętne w serwerze sql

  2. SQL Server:nie można utworzyć relacji

  3. SQL Server :wiersze w kolumny

  4. DECRYPTBYASYMKEY() nie zwraca oczekiwanej wartości

  5. jak zobaczyć/skryptować definicje widoków systemowych?