Dlaczego pojawia się błąd podczas wstawiania, gdy IDENTITY_INSERT
jest ustawiony na WYŁ?
Jak włączyć go poprawnie w SQL Server 2008? Czy to za pomocą SQL Server Management Studio?
Uruchomiłem to zapytanie:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Potem dostałem z powrotem komunikat w konsoli, że polecenia zostały pomyślnie wykonane. Jednak po uruchomieniu aplikacji nadal pojawia się błąd pokazany poniżej:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
Początkujący
źródło
źródło
Odpowiedzi:
Przez SQL zgodnie z MSDN
Pełny komunikat o błędzie mówi dokładnie, co jest nie tak ...
źródło
Miałem problem polegający na tym, że nie pozwalałem na wstawienie go nawet po ustawieniu WŁĄCZENIA IDENTITY_INSERT.
Problem polegał na tym, że nie podałem nazw kolumn i z jakiegoś powodu mi się to nie podobało.
Więc w zasadzie wykonaj pełne INSERT INTO tbl (cols) Wartości (vals)
źródło
Importuj: musisz wpisać kolumny w
INSERT
zestawieniuNie jest poprawne.
Jest poprawne
źródło
Wiem, że to starszy wątek, ale wpadłem na to. Jeśli użytkownik próbuje uruchomić wstawianie w kolumnie Tożsamość po innej sesji Ustaw IDENTITY_INSERT na WŁ., Jest on zobowiązany do otrzymania powyższego błędu.
Ustawienie wartości Wstawianie tożsamości i kolejne polecenia Wstaw DML mają być uruchamiane przez tę samą sesję.
Tutaj @Beginner ustawiał Identity Insert ON osobno, a następnie uruchamiał inserty z jego aplikacji. Dlatego dostał poniższy błąd:
źródło
Jest to prawdopodobne, gdy masz pole KLUCZ PODSTAWOWY i wstawiasz wartość, która się powiela lub masz ustawioną flagę INSERT_IDENTITY na wartość
źródło
Konieczne wydaje się umieszczenie
SET IDENTITY_INSERT Database.dbo.Baskets ON;
przed każdąINSERT
partią wysyłającą SQL .Na początku możesz wysłać kilka
INSERT ... VALUES ...
poleceń rozpoczętych jednymSET IDENTITY_INSERT ... ON;
ciągiem. Po prostu nie umieszczaj żadnego separatora wsadowego pomiędzy.Nie wiem, dlaczego
SET IDENTITY_INSERT ... ON
przestaje działać po bloku wysyłającym (np .:.ExecuteNonQuery()
w C #). MusiałemSET IDENTITY_INSERT ... ON;
ponownie wpisać na początku następnego ciągu poleceń SQL.źródło
Musisz dodać polecenie „idź” po ustawieniu wstawiania tożsamości. Przykład:
źródło