sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:Behöver jag använda GO-satser mellan batcher?

De är inte strikt nödvändiga - de är bara instruktioner för SQL Server Management Studio att exekvera satserna fram till denna punkt nu och sedan fortsätta. GO är inte ett T-SQL-sökord eller något annat - det är bara en instruktion som fungerar i SSMS.

Ibland behöver du en GO - t.ex. om du lägger till en kolumn i en tabell och sedan vill välja den igen, måste du ha en GO mellan att lägga till kolumnen och frågan om den.

T.ex. om du försöker köra detta får du felmeddelanden från SSMS:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5

Resultat i:

Poängen är:SSMS försöker verifiera hela uttalandet på en gång, men på SELECT-satsen kommer det att klaga på den saknade DateTimeStamp kolumn.

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO       

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5

Om du sätter en GO mellan de två satserna kommer det att fungera, eftersom SSMS inte kommer att tolka och verifiera hela satsen i förväg - det kommer att göra den första delen och sedan bara tolka den andra (efter GO ).

Men förutom situationer som denna, krävs GO nästan aldrig.



  1. Oracle- Delad sträng kommaavgränsad (sträng innehåller mellanslag och på varandra följande kommatecken)

  2. flerdimensionell array-fråga mysql

  3. Konstigt beteende med mysql_affected_rows() i PHP

  4. Tidsstämpelintervall