Condividi tramite


CREATE TABLE (SQL Server Compact)

Consente di creare una nuova tabella di Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5).

Sintassi

CREATE TABLE table_name 
   ( { < column_definition > | < table_constraint > } [ ,...n ] 
   ) 
< column_definition > ::= 
   { column_name data_type } 
   [ { DEFAULT constant_expression 
      | [ IDENTITY [ ( seed , increment ) ]
      ]
    } ] 
   [ ROWGUIDCOL ] 
   [ < column_constraint > [ ...n ] ]
< column_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ NULL | NOT NULL ] 
      | [ PRIMARY KEY | UNIQUE ] 
      | REFERENCES ref_table [ ( ref_column ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ] 
      [ ON UPDATE { CASCADE | NO ACTION } ] 
    }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      ]
   | FOREIGN KEY 
     ( column [ ,...n ] )
      REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ]
      [ ON UPDATE { CASCADE | NO ACTION } ] 
   }

Argomenti

  • table_name
    Nome della nuova tabella. I nomi delle tabelle devono essere conformi alle regole relative agli identificatori. Il valore table_name deve essere univoco all'interno del database Un table_name può contenere un massimo di 128 caratteri.
  • column_name
    Nome di una colonna della tabella. I nomi delle colonne devono essere conformi alle regole relative agli identificatori e devono essere univoci nella tabella.

    Nota

    I nomi delle colonne nei database di SQL Server Compact 3.5 non possono iniziare con "__sys". __sysobjects, ad esempio, è un nome di colonna riservato.

  • data_type
    Consente di specificare il tipo di dati della colonna. Per informazioni sui tipi di dati, vedere Tipi di dati e RDA.
  • DEFAULT
    Consente di specificare il valore impostato per la colonna quando non viene indicato in modo esplicito alcun valore durante un'operazione di inserimento. Le definizioni DEFAULT possono essere applicate a qualsiasi colonna, tranne quelle definite dalla proprietà IDENTITY. Le definizioni DEFAULT vengono rimosse quando si elimina la tabella. È possibile utilizzare un valore costante come predefinito.
  • IDENTITY
    Indica che la nuova colonna è una colonna Identity. Quando si aggiunge una nuova riga alla tabella, SQL Server Compact 3.5 specifica un valore univoco e incrementale per la colonna. Le colonne Identity vengono in genere utilizzate in unione con i vincoli PRIMARY KEY per fungere da identificatore di riga univoco per la tabella. La proprietà IDENTITY può essere assegnata solo alle colonne int. È possibile creare una sola colonna Identity per tabella. Le impostazioni predefinite associate e i vincoli DEFAULT non possono essere utilizzati con una colonna Identity. È necessario specificare il valore di inizializzazione e l'incremento o nessuno dei due. In questo secondo caso, il valore predefinito è (1,1).
  • seed
    Valore utilizzato per la prima riga caricata nella tabella.
  • increment
    Valore incrementale aggiunto al valore Identity della riga caricata in precedenza.
  • ROWGUIDCOL
    Indica che la nuova colonna è una colonna identificatore univoco globale di riga. È possibile impostare una sola colonna uniqueidentifier per tabella come colonna ROWGUIDCOL. È possibile assegnare la proprietà ROWGUIDCOL solo a una colonna uniqueidentifier.

    I valori per le nuove righe inserite nella tabella vengono automaticamente generati da ROWGUIDCOL.

  • CONSTRAINT
    Parola chiave facoltativa che indica l'inizio di una definizione di vincolo PRIMARY KEY, UNIQUE o FOREIGN KEY. I vincoli sono proprietà speciali che consentono di mantenere l'integrità dei dati e di creare speciali tipi di indici per la tabella e le relative colonne.
  • constraint_name
    Nome di un vincolo. Il valore constraint_name è facoltativo e deve essere univoco all'interno di un database. Se non si specifica alcun constraint_name, il nome del vincolo viene generato da SQL Server Compact 3.5.
  • NULL | NOT NULL
    Parole chiave che permettono di specificare se nella colonna siano consentiti i valori Null. NULL non è propriamente un vincolo, ma può essere specificato allo stesso modo di NOT NULL.
  • PRIMARY KEY
    Vincolo che impone l'integrità di entità per una o più colonne specifiche mediante un indice univoco. È possibile creare un solo vincolo PRIMARY KEY per tabella.
  • UNIQUE
    Vincolo che fornisce l'integrità di entità per una o più colonne specifiche mediante un indice univoco. Le colonne di un vincolo UNIQUE possono avere valore NULL, ma è consentito un solo valore NULL per colonna. A una tabella possono essere applicati più vincoli UNIQUE.

    Nota

    SQL Server Compact 3.5 consente di utilizzare gli indici per imporre i vincoli PRIMARY KEY e UNIQUE. È tuttavia consigliabile evitare di ricorrere a questa funzionalità e di modificare gli indici creati come parte di un vincolo.

  • FOREIGN KEY...REFERENCES
    Vincolo che fornisce l'integrità referenziale per i dati della colonna. I vincoli FOREIGN KEY richiedono che ogni valore della colonna esista nella colonna specificata nella tabella con riferimenti.
  • ref_table
    Nome della tabella a cui fa riferimento il vincolo FOREIGN KEY.
  • ( ref_column [ ,...n ] )
    Colonna o elenco di colonne della tabella a cui fa riferimento il vincolo FOREIGN KEY.
  • ON DELETE {CASCADE | NO ACTION}
    Consente di specificare quale operazione viene eseguita in una riga della tabella creata quando tale riga dispone di una relazione referenziale e la riga con riferimenti viene eliminata dalla tabella padre. L'impostazione predefinita è NO ACTION.

    Se viene specificato CASCADE, una riga viene eliminata dalla tabella di riferimento quando la corrispondente riga con riferimenti viene eliminata dalla tabella padre. Se viene specificato NO ACTION, SQL Server Compact 3.5 restituisce un errore e viene eseguito il rollback dell'operazione di eliminazione nella riga con riferimenti della tabella padre.

  • ON UPDATE {CASCADE | NO ACTION}
    Consente di specificare quale operazione viene eseguita in una riga della tabella creata quando tale riga dispone di una relazione referenziale e la riga con riferimenti viene aggiornata nella tabella padre. L'impostazione predefinita è NO ACTION.

    Se viene specificato CASCADE, la riga viene aggiornata nella tabella di riferimento quando la corrispondente riga con riferimenti viene aggiornata nella tabella padre. Se viene specificato NO ACTION, SQL Server Compact 3.5 restituisce un errore e viene eseguito il rollback dell'operazione di aggiornamento nella riga con riferimenti della tabella padre.

  • column
    Colonna o elenco di colonne, tra parentesi, utilizzato nei vincoli della tabella per indicare le colonne utilizzate nella definizione del vincolo.

Osservazioni

Definizioni di colonne

Quando si crea una tabella, è necessario specificare almeno una definizione di colonna.

Vincoli

  • Vincoli PRIMARY KEY
    • Una tabella può contenere un solo vincolo PRIMARY KEY.
    • Ogni PRIMARY KEY genera un indice.
    • Tutte le colonne definite all'interno di un vincolo PRIMARY KEY devono essere definite come NOT NULL. Se il supporto di valori Null non viene specificato, il supporto di valori Null di tutte le colonne che sono parte di un vincolo PRIMARY KEY viene impostato su NOT NULL.
  • Vincoli UNIQUE
    • Ogni vincolo UNIQUE genera un indice.
  • Vincoli FOREIGN KEY
    • Quando un valore diverso da NULL viene immesso nella colonna di un vincolo FOREIGN KEY, il valore deve esistere nella colonna con riferimenti. In caso contrario, viene restituito un messaggio di errore relativo alla violazione della chiave esterna.
    • I vincoli FOREIGN KEY possono fare riferimento a un'altra colonna della stessa tabella. In questo caso sono detti vincoli autoreferenziali. Tuttavia, i vincoli FOREIGN KEY non possono essere utilizzati per creare un vincolo FOREIGN KEY autoreferenziale o circolare.
    • Nella clausola REFERENCES di un vincolo FOREIGN KEY a livello di colonna può essere elencata una sola colonna di riferimento, che deve contenere lo stesso tipo di dati della colonna sulla quale è definito il vincolo.
    • La clausola REFERENCES di un vincolo FOREIGN KEY a livello di tabella deve contenere un numero di colonne di riferimento pari al numero di colonne contenute nell'elenco di colonne del vincolo. Il tipo di dati di ogni colonna di riferimento deve inoltre essere lo stesso della colonna corrispondente nell'elenco di colonne.
    • I vincoli FOREIGN KEY possono fare riferimento solo alle colonne nei vincoli PRIMARY KEY o UNIQUE nella tabella con riferimenti. I vincoli FOREIGN KEY non possono fare riferimento a indici univoci.
  • Ulteriori informazioni sui vincoli
    • Un indice creato per un vincolo non può essere eliminato con l'istruzione DROP INDEX. È necessario eliminare il vincolo con l'istruzione ALTER TABLE DROP CONSTRAINT.
    • I nomi dei vincoli devono essere conformi alle regole relative agli identificatori, con la differenza che il nome non può iniziare con un simbolo di cancelletto (#). Se la parola chiave CONSTRAINT e il valore constraint_name non vengono specificati, al vincolo viene assegnato un nome generato dal sistema.
    • Quando un vincolo viene violato in un'istruzione INSERT, UPDATE o DELETE, l'istruzione viene interrotta.

Definizioni DEFAULT

In una colonna può essere presente una sola definizione DEFAULT, che può contenere valori costanti o funzioni costanti.

Regole sul supporto di valori Null all'interno di una definizione di tabella

Il supporto di valori Null di una colonna determina se in tale colonna possano essere consentiti valori Null (NULL) come dati. NULL non equivale a zero o a un valore vuoto, ma indica che non è stata inserita alcuna voce o che è stato specificato un valore NULL esplicito e implica in genere che il valore sia sconosciuto o non applicabile.

Esempio

Gli esempi seguenti illustrano come procedere per:

  1. Creare una tabella a due colonne con una colonna Identity come PRIMARY KEY.
  2. Creare una tabella a una colonna con un vincolo PRIMARY KEY.
  3. Creare una tabella in cui una delle colonne fa riferimento a una colonna di un'altra tabella.
CREATE TABLE MyCustomers (CustID int IDENTITY (100,1) PRIMARY KEY, CompanyName nvarchar (50))

CREATE TABLE MyCustomers2 (CustID int CONSTRAINT pkCustId PRIMARY KEY)

CREATE TABLE MyOrders (OrderID int, CustID int REFERENCES MyCustomers(CustID))