2013-06-19 20 views
7

ho INVOICETABLE voglio inserire il valore non specificando i nomi delle colonne utilizzando SQL Server, ho provato questo ma non è working..please aiutareinserire dati nella tabella senza specificare i nomi delle colonne

INSERT INTO INVOICE 
VALUES(1,1,KEYBOARD,1,15,5,75) 
+2

senza la vostra struttura della tabella, abbiamo non sarà in grado di aiutare ... –

+2

e l'errore è? Cos'è 'KEYBOARD'? Hai specificato tutte le colonne? È ben documentato http://msdn.microsoft.com/en-us/library/ms174335.aspx – Jodrell

+2

INSERT INTO nome_tabella (colonna1, colonna2, colonna3, ...) VALORI (valore1, valore2, valore3, ...) ; – null

risposta

8

Perché vorresti farlo? Non specificare i nomi delle colonne è una cattiva pratica di codifica.

Nel tuo caso, però, keyboard ha bisogno di essere circondato da virgolette singole:

INSERT INTO INVOICE VALUES(1,1, 'KEYBOARD',1,15,5,75) 

Se proprio non si vuole digitare i nomi delle colonne, è possibile ottenere facilmente in SQL Server Management Studio. Apri il "Browser degli oggetti", apri il database e scegli "Tabelle". Scegli la tabella Invoice. Una delle opzioni è "Colonne".

Basta fare clic sul nome "Colonne" (non è necessario aprirlo) e trascinarlo in una finestra di query. Inserirà l'elenco di colonne.

18

Finché si ha il numero giusto di colonne nell'istruzione INSERT e finché tutti i valori tranne KEYBOARD sono un tipo di dati numerici e se si dispone delle autorizzazioni appropriate, questo dovrebbe funzionare.

INSERT INTO INVOICE VALUES(1,1,'KEYBOARD',1,15,5,75); 

SQL richiede virgolette singole attorno ai valori di testo.

Ma non utilizzare i nomi delle colonne non è una buona pratica. Non è raro che le persone cambino l'ordine delle colonne in una tabella. Cambiare l'ordine delle colonne non è una buona pratica, ma alcune persone insistono nel farlo comunque.

Se qualcuno esegue questa operazione e scambia la 5a e la 7a colonna nella tabella, l'istruzione INSERT continuerà comunque - entrambe le colonne sono numeriche - ma INSERT rovinerà i dati.

+0

Ho appena sperimentato questo caso quando il codice in Produzione si è rotto perché il mio caposquadra ha appena creato la tabella su Prod DB con un ordine diverso come lo erano sul DB di staging. Quindi, cattive pratiche da entrambe le parti. –

1
INSERT INTO INVOICE VALUES(1,1,'KEYBOARD',1,15,5,75); 

si dimentica di includere le virgolette singole in tastiera, il testo richiesto apici in SQL

2

sì, si può inserire direttamente i valori nella tabella come segue:

insert into `schema`.`tablename` values(val1,val2,val3); 
Problemi correlati