none
Identity Specfication RRS feed

  • Pergunta

  • Ola pessoal...

    Tenho uma tabela com a coluna (Id) como chave primaria.
    Esta coluna tem a propriedade Identity Specfication como (Yes)

    Como faço para mudar o Identity Specfication para (No) via script ???

    Grato pela ajuda


    Petrarca
    sexta-feira, 30 de abril de 2010 13:27

Respostas

  • Petrarca,

    Não é possivel fazer esta ação com um simples alter table...
    na SSMS ele vai renomear a tabela atual, criar uma nova, inserir os dados da tabela renomeada e apos insto deletar a tabela renomeada.

    caso queira fazer via script, deve seguir os mesmo passos...

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta Petrarca terça-feira, 4 de maio de 2010 09:37
    sexta-feira, 30 de abril de 2010 14:28
    Moderador
  • Petrarca,

    Segue o Script:

     

    COMMIT
    BEGIN TRANSACTION
    CREATE TABLE <NOVATABELA> -- Atenção: Esta deve ter a mesma estrutura da que você irá alterar o campo identity (Tabela_Antiga)
     (
     <campo1> <tipo>,

     <campoN> <tipo>  -- Incluir todos os campos da Tabela_Antiga  

    )
    GO
    IF EXISTS(SELECT * FROM <TABELA_ANTIGA>) -- Agora se usa o nome da tabela antiga que será substituida pela "Nova"
      EXEC('INSERT INTO <NOVATABELA> (<CAMPOS>) SELECT <CAMPOS> FROM <TABELA_ANTIGA>') --Aqui é passado os dados da tabela antiga para a nova
    GO
    DROP TABLE <TABELA_ANTIGA> -- Para Apagar a tabela antiga
    GO
    EXECUTE sp_rename N'<NOVATABELA>', N'<TABELA_ANTIGA>' -- Renomear "NOVATABELA" para o nome da Tabela Antiga
    GO
    COMMIT                                          

     

    NOTA: Não será necessário informar no Script se a Nova Tabela terá ou Não campo Identity, pois no seu caso, você necessita que a opção(Identity) NÃO seja utilizada em nenhum dos campos, portanto, a propriedade não será ativada .


    Att.

    Leonardo

    JN Moura Informática - www.jnmoura.com.br
    JN Moura Informática.
    • Sugerido como Resposta JN Moura Informática terça-feira, 4 de maio de 2010 03:03
    • Marcado como Resposta Petrarca terça-feira, 4 de maio de 2010 09:37
    terça-feira, 4 de maio de 2010 03:02

Todas as Respostas

  • Petrarca,

    Não é possivel fazer esta ação com um simples alter table...
    na SSMS ele vai renomear a tabela atual, criar uma nova, inserir os dados da tabela renomeada e apos insto deletar a tabela renomeada.

    caso queira fazer via script, deve seguir os mesmo passos...

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta Petrarca terça-feira, 4 de maio de 2010 09:37
    sexta-feira, 30 de abril de 2010 14:28
    Moderador
  • Petrarca,

    Segue o Script:

     

    COMMIT
    BEGIN TRANSACTION
    CREATE TABLE <NOVATABELA> -- Atenção: Esta deve ter a mesma estrutura da que você irá alterar o campo identity (Tabela_Antiga)
     (
     <campo1> <tipo>,

     <campoN> <tipo>  -- Incluir todos os campos da Tabela_Antiga  

    )
    GO
    IF EXISTS(SELECT * FROM <TABELA_ANTIGA>) -- Agora se usa o nome da tabela antiga que será substituida pela "Nova"
      EXEC('INSERT INTO <NOVATABELA> (<CAMPOS>) SELECT <CAMPOS> FROM <TABELA_ANTIGA>') --Aqui é passado os dados da tabela antiga para a nova
    GO
    DROP TABLE <TABELA_ANTIGA> -- Para Apagar a tabela antiga
    GO
    EXECUTE sp_rename N'<NOVATABELA>', N'<TABELA_ANTIGA>' -- Renomear "NOVATABELA" para o nome da Tabela Antiga
    GO
    COMMIT                                          

     

    NOTA: Não será necessário informar no Script se a Nova Tabela terá ou Não campo Identity, pois no seu caso, você necessita que a opção(Identity) NÃO seja utilizada em nenhum dos campos, portanto, a propriedade não será ativada .


    Att.

    Leonardo

    JN Moura Informática - www.jnmoura.com.br
    JN Moura Informática.
    • Sugerido como Resposta JN Moura Informática terça-feira, 4 de maio de 2010 03:03
    • Marcado como Resposta Petrarca terça-feira, 4 de maio de 2010 09:37
    terça-feira, 4 de maio de 2010 03:02
  • Ola Leonardo

    Valeu, obrigado pela atenção.

     


    Petrarca
    terça-feira, 4 de maio de 2010 09:37