2009-06-26 8 views
24

Mam tabelę z kolumną automatycznego wymuszania inkrementacji, a ta kolumna jest bardzo cennym identyfikatorem, który jest przechowywany przez całą aplikację. Przykro mi to mówić, że to był kiepski rozwój z mojej strony, aby to była kolumna z automatyczną inkrementacją.SQL-jak wstawić wiersz bez automatycznej inkrementacji kolumny identyfikatora?

Tak, tutaj jest problem. Muszę wstawić do tej tabeli identyfikator kolumny, która została już utworzona i usunięta z tabeli. Trochę jak wskrzeszanie tego ID i wrzucenie go z powrotem do stołu.

W jaki sposób mogę to zrobić programowo, bez odwracania przyrostu kolumny. Popraw mnie, jeśli się mylę, jeśli wyłączyłem programowo, uruchomi się ponownie na 0 lub 1 i nie chcę, żeby tak się stało ...

+0

Z jakiego RDBMS korzystasz? – Quassnoi

+0

Serwer MS-SQL do tego pytania ... –

Odpowiedz

58

Jeśli jesteś w Microsoft SQL Server, możesz "wyłączyć "funkcja Autoinkrementacja wydając oświadczenie Set Identity_Insert [TableName] On, jak w:

Set Identity_Insert [TableName] On 
    -- -------------------------------------------- 
    Insert TableName (pkCol, [OtherColumns]) 
    Values(pkValue, [OtherValues]) 
    -- ---- Don't forget to turn it back off ------ 
    Set Identity_Insert [TableName] Off 
+0

Dzięki, @jvanderh, ja zredagowałem, aby wyjaśnić –

+0

marc_s ma rację ... masz to do tyłu – jvanderh

+0

Czy zachowuje on ostatni numer dla zwiększonej Tożsamości? Nie chcę, żeby zresetował całą kolumnę Tożsamości ... –

7

Poza odpowiedzią Karola (który jest teraz w 100% poprawne :-) i który zachowuje bieżącą wartość tożsamości na stole) możesz również sprawdzić bieżącą wartość TOŻSAMOŚCI na tabeli - możesz to zrobić za pomocą tego polecenia:

DBCC CHECKIDENT('YourTableName') 

Jeśli kiedykolwiek trzeba faktycznie zmiana to można zrobić za pomocą tej komendy tutaj:

DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY)) 
3

Właściwie powyższy kod na INDENTITY_INSERT jest poprawna - włączał informuje serwer, który chcesz wstaw wartości samodzielnie. Umożliwia wstawianie wartości do kolumny IDENTITY. Następnie należy go wyłączyć (umożliwiając serwerowi wygenerowanie i wstawienie wartości) po zakończeniu.

Powiązane problemy