2013-06-19 15 views
7

mam INVOICETABLE chcę wstawić wartości przez nie podając nazwy kolumn użyciu SQL Server, próbowałem tego, ale to nie jest working..please pomócINSERT do tabeli bez określania nazwy kolumn

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

bez struktury tabeli, my nie będzie w stanie pomóc ... –

+2

a błąd jest? Czym jest "KEYBOARD"? Czy podałeś wszystkie kolumny? Dobrze udokumentowane http://msdn.microsoft.com/en-us/library/ms174335.aspx – Jodrell

+2

INSERT INTO nazwa_tabeli (kolumna1, kolumna2, kolumna3, ...) WARTOŚCI (wartość1, wartość2, wartość3, ...) ; – null

Odpowiedz

8

Dlaczego chciałbyś to zrobić? Brak określenia nazw kolumn jest złą praktyką kodowania.

W twoim przypadku, choć keyboard musi być otoczone apostrofami:

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

Jeśli po prostu nie chce, aby wpisać nazwy kolumn, można je łatwo w SQL Server Management Studio. Otwórz "Przeglądarkę obiektów", otwórz bazę danych i wybierz "Tabele". Wybierz tabelę Invoice. Jedną z opcji jest "Kolumny".

Wystarczy kliknąć nazwę "Kolumny" (nie trzeba jej otwierać) i przeciągnąć do okna zapytania. Wstawi listę kolumn.

18

Tak długo, jak masz odpowiednią liczbę kolumn w instrukcji INSERT, i tak długo, jak wszystkie wartości, z wyjątkiem KEYBOARD, są pewnym typem danych liczbowych, i tak długo, jak masz odpowiednie uprawnienia, powinno to działać.

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

SQL wymaga pojedynczego cudzysłowu wokół wartości tekstowych.

Ale nie używanie nazw kolumn nie jest dobrą praktyką. Nie jest niespotykane, aby ludzie zmieniali kolejność kolumn w tabeli. Zmiana kolejności kolumn nie jest dobrą praktyką, ale niektórzy ludzie i tak nalegają, aby to zrobić.

Jeśli ktoś to zrobi i zamieni piąte i siódme kolumny w twojej tabeli, twoja instrukcja INSERT nadal się powiedzie - obie te kolumny są numeryczne - ale INSERT zepsuje twoje dane.

+0

Po prostu doświadczyłem tego przypadku, gdy kod w Production rozpadł się, ponieważ mój Team Lead właśnie stworzył tabelę na Prod DB z inną kolejnością niż w przypadku Staging DB. Tak, zła praktyka po obu stronach. –

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

pominięcia zawierać apostrofów klawiatura, tekst wymaga apostrofów w SQL

2

tak można bezpośrednio wstawić wartości do tabeli w następujący sposób:

insert into `schema`.`tablename` values(val1,val2,val3); 
Powiązane problemy