2014-05-07 8 views
7

Utworzono tabelę w programie SQL Server 2012 z kluczem podstawowym jako automatyczny przyrost. Ale jak mogę usunąć tę właściwość automatycznej inkrementacji z tabeli przy użyciu zapytania SQL?Jak usunąć automatyczne zwiększenie z tabeli na serwerze sql 2012

+0

http://stackoverflow.com/questions/8834433/ remove-auto-increment-by-script-sql-server – slavoo

+0

Usuń wiązkę PK, upuść kolumnę - nie ma sposobu, aby po prostu usunąć specyfikację 'IDENTITY' z istniejącej kolumny .... –

+0

http://stackoverflow.com/questions/8230257/sql-server-remove-identity-from-a-column-in-a-table – MarkD

Odpowiedz

7

Najłatwiej byłoby:

  1. Otwarte SQL Server Management Studio.
  2. Znajdź serwer> Baza danych> Tabela.
  3. Kliknij prawym przyciskiem myszy na Tabela> Wybierz projekt.
  4. W oknie projektu podświetl kolumnę, którą chcesz zmodyfikować.
  5. W oknie przejdź do: Identity Specification>Is Identity Ustaw na No.
  6. Przejdź do menu paska narzędzi>Table Designer> Wybierz Generate Change Script...
  7. Walla, dostałeś żądany skrypt.

Lubię tą metodą uzyskania skryptów, ponieważ pozwala mi do generowania skryptów nie jestem pewien, jak komponować od zera, a więc nauka i doskonalenie swoich umiejętności ...

enter image description here

+0

@Downvoters Czy mógłbyś wyjaśnić sprawę? –

+0

Najlepsza odpowiedź. dobry sposób generowania różnych skryptów. tnx – hamid

+0

Otrzymuję "Zapisywanie zmian jest niedozwolone ..." – Savage

8

Jeśli chcesz zachować dane w tej kolumnie, a następnie utwórz nową kolumnę w tabeli, która jest tego samego typu (ale inną nazwę), skopiuj dane z kolumny, której chcesz się pozbyć, do nowej, upuść stara kolumna i zmień nazwę nowego. Pełny przykład:

CREATE TABLE test(col1 INT IDENTITY (1,1) NOT NULL, col2 VARCHAR(10) NULL); 

ALTER TABLE test ADD col3 INT NULL; 

UPDATE test SET col3 = col1; 

ALTER TABLE test DROP COLUMN col1; 

EXEC sp_rename 'dbo.test.col3', 'col1', 'COLUMN'; 
4

Jeśli jest to podstawowa kolumna klucza, to musisz najpierw upuścić PK. Jeśli istnieją tabele odwołujące się do niego, musisz upuścić te FK, aby móc upuścić PK. Następnie dodaj kolejną kolumnę tego samego typu, zaktualizuj ją wartościami z kolumny tożsamości, upuść kolumnę tożsamości, zmień nazwę nowej kolumny na dowolną nazwę kolumny tożsamości (z procedurą sp_rename), odtwórz PK, odtwórz FK, sprawdź, czy wszystko poszło dobrze.

Byłbym bardzo ostrożny, robiąc to na produkcyjnej bazie danych. Upewnij się, że nikt nie może uzyskać dostępu do danych podczas wykonywania tej czynności.

-1

SET IDENTITY_INSERT [TABELA] WYŁ .. ten pozwala usunąć automatycznego przyrostu do stanu wyłączenia .. tak, że musimy wprowadzić wartość w thatcolumn

+1

Nie, to nie jest - oznaczałoby to, że nie można wstawić bezpośrednio do kolumny. musisz ustawić "IDENTITY_INSERT" na "ON", aby zastąpić numer auto. Poza tym nie jest to właściwe rozwiązanie, ponieważ nie usunęło ono specyfikacji tożsamości kolumny i mogłoby zostać włączone w przyszłości z potencjalnie niechcianymi lub nawet niebezpiecznymi konsekwencjami. –

+0

Jest to obejście, a nie rozwiązanie – Savage