INSERT (SQL Server Compact)
Aggiunge nuove righe a una tabella.
INSERT [INTO]
table_name [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
}
[INTO]
Parola chiave facoltativa che può essere utilizzata tra INSERT e la tabella di destinazione.table_name
Nome di una tabella che dovrà ricevere i dati.( column_list )
Elenco di una o più colonne a cui aggiungere i dati. L'argomento column_list deve essere racchiuso tra parentesi e delimitato da virgole.VALUES
Introduce l'elenco di valori di dati da inserire. Deve essere presente un valore di dati per ogni colonna in column_list, se specificato, o nella tabella. L'elenco di valori deve essere racchiuso tra parentesi.DEFAULT
Richiede che il valore predefinito definito per una colonna venga utilizzato da Microsoft SQL Server Compact.NULL
Indica che il valore è sconosciuto. Un valore NULL è diverso da un valore vuoto o uguale a zero.expression
Costante, variabile o espressione.derived_table
Qualsiasi istruzione SELECT valida che restituisce righe di dati da inserire nella tabella.
Per sostituire i dati in una tabella, è necessario utilizzare l'istruzione DELETE per eliminare i dati esistenti prima di caricare i nuovi dati con INSERT. Per modificare i valori delle colonne nelle righe esistenti, utilizzare UPDATE.
Se l'argomento column_list viene omesso, i dati vengono inseriti in un elenco di colonne che identifica tutte le colonne della tabella nella sequenza crescente delle posizioni ordinali delle colonne.
È possibile identificare una colonna della tabella una sola volta in column_list*.*
Se una colonna non si trova in column_list, è necessario che SQL Server Compact sia in grado di fornire un valore basato sulla definizione della colonna. In caso contrario, non è possibile caricare la riga. SQL Server Compact imposta automaticamente un valore per la colonna se la colonna:
Dispone di una proprietà IDENTITY. Viene utilizzato il successivo valore Identity incrementale.
Dispone di un valore predefinito. Viene utilizzato il valore predefinito per la colonna.
Ammette valori Null. Viene utilizzato un valore Null.
È necessario utilizzare l'elenco di colonne e l'elenco VALUES quando si inseriscono valori espliciti in una colonna Identity. Se i valori dell'elenco VALUES non sono nello stesso ordine delle colonne nella tabella o se tale elenco non contiene un valore per ogni colonna della tabella, è necessario utilizzare column_list per specificare in modo esplicito la colonna in cui viene archiviato ogni valore in ingresso.
Se si utilizza DEFAULT per specificare il valore di una colonna, viene inserito il valore predefinito di tale colonna. Se non esiste un valore predefinito per la colonna e la colonna consente i valori Null, viene inserito NULL. DEFAULT non è un valore valido per una colonna Identity.
Nelle colonne create con il tipo di dati uniqueidentifier vengono archiviati i valori binari a 16 byte in formato speciale. Diversamente dalle colonne Identity, i valori per le colonne ROWGUID vengono automaticamente generati da SQL Server Compact con il tipo di dati uniqueidentifier. Durante un'operazione di inserimento, è possibile utilizzare variabili con un tipo di dati uniqueidentifier e costanti di stringa nel formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, corrispondente a 36 caratteri inclusi i trattini dove x è una cifra esadecimale compresa tra 0 e 9 o tra a e f, per le colonne uniqueidentifier. 6F9619FF-8B86-D011-B42D-00C04FC964FF, ad esempio, è un valore valido per una colonna o una variabile uniqueidentifier.
Quando si inseriscono righe, vengono applicate le regole seguenti:
Se un valore viene caricato nelle colonne con un tipo di dati nchar, nvarchar o varbinary, il riempimento o il troncamento degli spazi finali (spazi per nchar e nvarchar, zeri per varbinary) viene determinato in base a quanto definito nella tabella seguente.
Tipo di dati
Operazione predefinita
nchar/binary
Riempimento del valore originale con spazi finali per le colonne nchar e con zeri finali per le colonne binary, per tutta la lunghezza della colonna.
nvarchar
Gli spazi finali nei valori di carattere inseriti nelle colonne nvarchar non vengono eliminati. I valori non vengono riempiti per tutta la lunghezza della colonna.
varbinary
Gli zeri finali nei valori binari inseriti nelle colonne varbinary non vengono eliminati. I valori non vengono riempiti per tutta la lunghezza della colonna.
Se un'istruzione INSERT viola un vincolo o una regola o se contiene un valore non compatibile con il tipo di dati della colonna, l'istruzione non viene eseguita e in SQL Server Compact viene visualizzato un messaggio di errore.
Se INSERT carica più righe con SELECT, qualsiasi violazione di una regola o di un vincolo che abbia origine dai valori caricati provoca l'arresto completo dell'istruzione e nessuna riga viene caricata.
Nota
Per eseguire più query contemporaneamente, includere un punto e virgola (;) e un carattere di nuova riga alla fine di ciascuna istruzione. Tutti i commenti devono iniziare con due trattini (--).
Nell'esempio seguente viene aggiunta una nuova società alla tabella Customers. Dove determinate informazioni non sono disponibili, viene inserito un valore Null.
INSERT INTO Customers VALUES ('TPC', 'The Phone Company', 'John Kane', 'Owner', NULL, 'Forks', NULL, NULL, 'USA', NULL, DEFAULT);
Nell'esempio seguente vengono utilizzati column_list e l'elenco VALUES per specificare in modo esplicito i valori inseriti in ogni colonna della tabella Customers.
INSERT INTO Customers ([Customer ID], [Company Name], Country, Phone)
VALUES ('WWI', 'Wide World Importers', 'USA', '206-555-0165');
Nell'esempio seguente la tabella Employees contiene tre colonne: EmployeeID, LastName e FirstName. L'istruzione seguente consente di aggiungere Ben Smith alla tabella Employees senza specificare un valore per EmployeeID.
INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Smith', 'Ben');
Nell'esempio seguente viene utilizzata una derived_table per inserire i valori.
INSERT INTO Table1 (col1, col2) SELECT (col1, col2) from Table2;
Nell'esempio seguente viene illustrato come inserire un valore di data.
INSERT INTO Orders ([Order ID], [Customer ID], [Order Date])
VALUES (34, 'FRANS', '4/2/2004');