Condividi tramite


Identificatori di database

Il nome dell'oggetto di database viene definito identificatore. Tutti gli elementi in Microsoft SQL Server possono avere un identificatore. I server, i database e gli oggetti di database, ad esempio tabelle, viste, colonne, indici, trigger, procedure, vincoli e regole, possono avere identificatori. Gli identificatori sono necessari per la maggior parte degli oggetti, ma sono facoltativi per alcuni oggetti, ad esempio vincoli.

Un identificatore di oggetto viene creato quando viene definito l'oggetto . L'identificatore viene quindi utilizzato per fare riferimento all'oggetto . Ad esempio, l'istruzione seguente crea una tabella a cui viene associato l'identificatore TableXe due colonne a cui vengono associati gli identificatori KeyCol e Description:

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

Questa tabella include anche un vincolo senza nome. Il PRIMARY KEY vincolo non ha alcun identificatore.

Le regole di confronto di un identificatore dipendono dal livello in cui è 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 in un database, ad esempio tabelle, viste e nomi di colonna, vengono assegnate le regole di confronto predefinite del database. Ad esempio, è possibile creare due tabelle con nomi che differiscono solo per maiuscole e minuscole in un database con distinzione tra maiuscole e minuscole, ma non si possono creare in un database con una collazione senza distinzione tra maiuscole e minuscole.

Annotazioni

I nomi delle variabili o i parametri delle funzioni e delle stored procedure devono essere conformi alle regole per gli identificatori Transact-SQL.

Classi di identificatori

Esistono due classi di identificatori:

Identificatori regolari
Rispettare le regole per il formato degli identificatori. Gli identificatori regolari non sono delimitati quando vengono utilizzati nelle istruzioni di tipo Transact-SQL.

SELECT *  
FROM TableX  
WHERE KeyCol = 124  

Identificatori delimitati
Sono contenuti tra virgolette doppie (") o parentesi quadre ([ ]). Gli identificatori conformi alle regole per il formato degli identificatori potrebbero non essere delimitati. Per esempio:

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

Gli identificatori che non sono conformi a tutte le regole per gli identificatori devono essere delimitati in un'istruzione Transact-SQL. Per 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 delimitati devono contenere da 1 a 128 caratteri. Per le tabelle temporanee locali, l'identificatore può avere un massimo di 116 caratteri.

Regole per gli identificatori regolari

I nomi di variabili, funzioni e stored procedure devono essere conformi alle regole seguenti per gli identificatori Transact-SQL.

  1. Il primo carattere deve essere uno dei seguenti:

    • Lettera definita dallo standard Unicode 3.2. La definizione Unicode di lettere include caratteri latini da a z, da A a Z e anche caratteri di lettere di altre lingue.

    • Carattere di sottolineatura (_), nel segno (@) o nel segno di numero (#).

      Alcuni simboli all'inizio di un identificatore hanno un significato speciale in SQL Server. Un identificatore regolare che inizia con il segno indica sempre una variabile o un parametro locale e non può essere usato come nome di qualsiasi altro tipo di oggetto. Un identificatore che inizia con un segno di numero indica una tabella o una routine temporanea. Un identificatore che inizia con segni di numero doppio (##) indica un oggetto temporaneo globale. Anche se è possibile usare il segno di numero o il segno di numero doppio per iniziare i nomi di altri tipi di oggetti, non è consigliabile eseguire questa procedura.

      Alcune funzioni Transact-SQL hanno nomi che iniziano con doppi segni di chiocciola (@@). Per evitare confusione con queste funzioni, non è consigliabile usare nomi che iniziano con @@.

  2. I caratteri successivi possono includere quanto segue:

    • Lettere definite nello standard Unicode 3.2.

    • Numeri decimali da alfabeti latini di base o da altri script nazionali.

    • La chiocciola, il simbolo del dollaro ($), il simbolo del numero o il carattere di sottolineatura.

  3. L'identificatore non deve essere una parola riservata Transact-SQL. SQL Server riserva sia le versioni maiuscole che minuscole delle parole riservate. Quando gli identificatori vengono usati nelle istruzioni Transact-SQL, gli identificatori non conformi a queste regole devono essere delimitati da virgolette doppie o parentesi quadre. Le parole riservate dipendono dal livello di compatibilità del database. Questo livello può essere impostato usando l'istruzione ALTER DATABASE .

  4. Gli spazi incorporati o i caratteri speciali non sono consentiti.

  5. Non sono consentiti caratteri supplementari.

Quando gli identificatori vengono usati nelle istruzioni Transact-SQL, gli identificatori non conformi a queste regole devono essere delimitati da virgolette doppie o parentesi quadre.

Annotazioni

Alcune regole per il formato degli identificatori regolari dipendono dal livello di compatibilità del database. Questo livello può essere impostato tramite ALTER DATABASE.

Vedere anche

ALTER TABLE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
CREATE VIEW (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
Parole chiave riservate (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)