Identificatori

Il nome di un oggetto di database rappresenta l'identificatore dell'oggetto stesso. È possibile associare un identificatore a qualunque elemento di MicrosoftSQL Server, ad esempio server, database e oggetti di database quali tabelle, viste, colonne, indici, trigger, procedure, vincoli, regole e così via. Gli identificatori sono richiesti con la maggior parte degli oggetti. Per alcuni oggetti, quali i vincoli, sono facoltativi.

L'identificatore viene creato in fase di definizione dell'oggetto e viene successivamente utilizzato per fare riferimento all'oggetto. Ad esempio, l'istruzione seguente crea una tabella a cui viene associato l'identificatore TableX e due colonne a cui vengono associati gli identificatori KeyCol e Description:

CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80))

La tabella include inoltre un vincolo senza nome. Il vincolo PRIMARY KEY è privo di identificatore.

Le regole di confronto di un identificatore dipendono dal livello nel quale viene definito. Agli identificatori degli oggetti a livello di istanza, quali gli account di accesso e i nomi di database, vengono assegnate le regole di confronto predefinite dell'istanza. Agli identificatori degli oggetti di un database, quali tabelle, viste e nomi di colonna, vengono assegnate le regole di confronto predefinite del database. Ad esempio, due tabelle i cui nomi si differenziano soltanto per l'utilizzo del maiuscolo e del minuscolo possono essere create in un database con regole di confronto in cui l'uso di maiuscole e minuscole è rilevante, ma non in un database con regole di confronto in cui l'uso di maiuscole e minuscole non è rilevante.

Classi di identificatori

Esistono due classi di identificatori:

  • Identificatori regolari
    Sono conformi alle regole relative al formato degli identificatori. Gli identificatori regolari non vengono delimitati quando vengono utilizzati in istruzioni Transact-SQL.

    SELECT *
    FROM TableX
    WHERE KeyCol = 124
    
  • Identificatori delimitati
    Sono racchiusi tra virgolette doppie (") o tra parentesi quadre ([ ]). Gli identificatori conformi alle regole relative al formato degli identificatori possono non essere delimitati. Ad esempio:

    SELECT *
    FROM [TableX]         --Delimiter is optional.
    WHERE [KeyCol] = 124  --Delimiter is optional.
    

    All'interno di un'istruzione Transact-SQL è necessario che gli identificatori non conformi alle regole relative agli identificatori siano delimitati. Ad esempio:

    SELECT *
    FROM [My Table]      --Identifier contains a space and uses a reserved keyword.
    WHERE [order] = 10   --Identifier is a reserved keyword.
    

Sia gli identificatori regolari che quelli delimitati devono essere composti da un numero di caratteri compreso tra 1 e 128. Gli identificatori delle tabelle temporanee locali possono includere al massimo 116 caratteri.

Regole relative agli identificatori regolari

Le regole relative al formato degli identificatori regolari dipendono dal livello di compatibilità del database. È possibile impostare tale livello con ALTER DATABASE. Se il livello di compatibilità è 100, verranno applicate le regole indicate di seguito.

  1. Il primo carattere deve essere uno dei seguenti:

    • Una lettera definita dallo standard Unicode 3.2, ovvero i caratteri dell'alfabeto latino a-z e A-Z e i caratteri di altre lingue.

    • Il carattere di sottolineatura (_), il simbolo di chiocciola (@) o il simbolo di cancelletto (#).

      Alcuni caratteri utilizzati all'inizio di un identificatore assumono un significato particolare in SQL Server. Un identificatore regolare che inizia con il carattere @ indica sempre una variabile locale o un parametro e non può essere utilizzato per il nome di un tipo di oggetto diverso. il carattere # indica una tabella o una procedura temporanea, mentre due simboli di cancelletto (##) indicano un oggetto temporaneo globale. Nonostante sia possibile utilizzare uno o due simboli di cancelletto all'inizio dei nomi di altri tipi di oggetti, è consigliabile non adottare questa tecnica.

      I nomi di alcune funzioni Transact-SQL iniziano con due simboli di chiocciola (@@). Per evitare confusione in merito a tali funzioni, è consigliabile non utilizzare nomi che iniziano con @@.

  2. I caratteri successivi possono includere gli elementi seguenti:

    • Lettere definite nello standard Unicode 3.2.

    • Numeri decimali inclusi negli script Latino di base o in altri script nazionali.

    • Il simbolo di chiocciola, il simbolo di dollaro ($), il simbolo di cancelletto o il carattere di sottolineatura.

  3. L'identificatore non deve coincidere con una parola riservata Transact-SQL. In SQL Server sono riservate sia la versione maiuscola che minuscola della parola riservata.

  4. Non sono consentiti spazi incorporati o caratteri speciali.

  5. Non sono consentiti caratteri supplementari.

Quando vengono utilizzati in istruzioni Transact-SQL, gli identificatori non conformi a queste regole devono essere racchiusi tra virgolette doppie o parentesi quadre.

[!NOTA]

È necessario che i nomi di variabili, funzioni e stored procedure siano conformi alle regole relative agli identificatori Transact-SQL.