Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [sql server 2005]: rimuovere e rimettere una identity

    Ciao a tutti,

    ho la necessità, in una stored procedure, di dover migrare alcuni dati con valori fittizi, e per farlo mi occorre rimuovere una identity in una colonna, per poi rimetterla..

    come posso fare con un comando t-sql, dovendolo far fare ad una procedura?

    Grazie

    Mike "The Ram"

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Perche vuoi fare una cosa cosi brutta !!!
    quando puoi fare quasi tutto mantenendo il campo identity attivo

    Prova a guardare questo script ( SQLServer2008 / 2005 )
    codice:
    -- ____________________________________________
    -- Creazione di un nuovo DB
    USE master
    GO
    CREATE DATABASE fxx; 
    GO
    
    -- ___________________________________________
    --  Uso il DB appena creato
    USE fxx;
    GO
    
    -- ___________________________________________
    -- Creo una tabella con un campo Id IDENTITY  ( Non Key )
    CREATE TABLE [dbo].[Tab]
    (
    	[Id] [int] IDENTITY(1,1) NOT NULL,
    	[Forn] [varchar](50) NULL,
    	[Via] [varchar](50) NULL,
    	[Citta] [varchar](50) NULL
    ) ON [PRIMARY]
    GO
    
    
    -- ___________________________________________
    -- Inseriamo un po' di dati
    -- FORZANDO IL VALORE DI Id CHE VOGLIAMO
    
    SET IDENTITY_INSERT [dbo].[Tab] ON
    
    INSERT [dbo].[Tab] ([Id], [Forn], [Via], [Citta]) VALUES (17, N'Fiat', N'Lingotto', N'Torino')
    INSERT [dbo].[Tab] ([Id], [Forn], [Via], [Citta]) VALUES (21, N'Ariston', N'Boccaccio', N'Verona')
    INSERT [dbo].[Tab] ([Id], [Forn], [Via], [Citta]) VALUES (32, N'Candy', N'Petrarca', N'Vicenza')
    
    SET IDENTITY_INSERT [dbo].[Tab] OFF
    GO
    
    
    -- ___________________________________________
    -- Inseriamo un po' di dati
    -- SENZA FORZARE IL VALORE DI Id 
    INSERT [dbo].[Tab] ([Forn], [Via], [Citta]) VALUES (N'Loreal', N'Leopardi', N'Bologna')
    INSERT [dbo].[Tab] ([Forn], [Via], [Citta]) VALUES (N'Esselunga', N'Pascoli', N'Firenze')
    INSERT [dbo].[Tab] ([Forn], [Via], [Citta]) VALUES (N'Osram', N'Quasimodo', N'Roma')
    GO
    
    -- ___________________________________________


    Se invece devi proprio rimuovere la identity sappi che dovrai
    ( anche se inconsapevolmente )
    Creare una copia della tabella ( struttura e DATI )
    eliminare la tabella di origine
    rinominare la copia

    _________________________________________________

    vai in Management studio
    fatti una tabella campione con identity
    salvala
    elimina la identity
    PRIMA DI SALVARE clicca il pulsante "Genera Script" in alto a Sx
    e leggiti lo script

    __________________________________________________ __

    .

  3. #3
    Ciao Nman, e grazie per il supporto.

    In realtà quello che devo fare è inserire un riga con valore id= 1 dove l'id progressivo ha gia superato questo valore. Non posso toccare la struttura del database per vincoli aziendali, per cui I MUST SWITCH OFF l'identity :P

    Ho risolto il problema semplicemente cosi':

    SET IDENTITY_INSERT dbo.miatabella ON

    INSERT into dbo.miatabella (id, campo1, campo2..) values ( 1,value 1, value 2)

    SET IDENTITY_INSERT dbo.miatabella OFF

    mi ha funzionato

    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.