Rozwiązaniem powyższego problemu jest utworzenie od nowa tabeli z prawidłową strukturą. Należy pamiętać o zrobieniu kopii tabeli.
Należy wykonać następujące czynności:
- Usuwamy wszystkie powiązania do tabeli.
- Zawsze sprawdzamy (TAKI NAWYK!!!) czy istnieje tabela tymczasowa. Jeżeli tak to ją kasujemy.
- Tworzymy tabelę tymczasową i kasujemy naszą właściwą tabelę (wcześniej radziłbym zrobić jej kopie)
- Tworzymy strukturę nowej tabeli z IDENTITY
- Dopisujemy dane i sprzątamy po sobie kasując tabelę tymczasową.
Poniżej przedstawiono przykładowy kod:
-- Drop temp table if they already exist
IF OBJECT_ID('TempDB..#Test', 'U') IS NOT NULL DROP TABLE #Test;
-- Create the temp table
SELECT * INTO #Test FROM [dbo].[TEST]
DROP TABLE [dbo].[TEST]
CREATE TABLE [dbo].[TEST](
[id] [int] IDENTITY(1,1) NOT NULL,
[test] [varchar](11) NULL,
CONSTRAINT [PK_TEST] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[TEST] ON
INSERT INTO [dbo].[TEST] (id, test)
SELECT id, test
FROM #Test
SET IDENTITY_INSERT [dbo].[TEST] OFF
IF OBJECT_ID('TempDB..#Test', 'U') IS NOT NULL DROP TABLE #Test;