none
SQL SERVER - Altera ID da tabela e continuar a sequencia RRS feed

  • Pergunta

  • Amigos, bom dia

    Creio que seja um tema antigo, mais não consegui encontrar no fórum, se possível alguém da uma ajuda agradeço.

    Possuo uma tabela no SQL SERVER onde o ID não esta em ordem, devido alguns dados deletados, essa tabela o ID não e a chave primaria, gostaria que o ID da tabela se organizassem e continua-se de onde parou nos novos dados inclusos.

    Abaixo inventei uma tabela parecida, e os passos para alguém ajudar na corrigir os ID.

    Muitos fórum informa sobre a chave ser principal não ser viável essa organização e não encontrei ninguém dando uma solução, o ID é somente uma numeração sem nenhum vinculo.

    Agradeço a todos pela atenção.

     

    Criação do Banco

    CREATE DATABASE Ambiente_Teste
    GO

     

    Criação da Tabela

    CREATE TABLE dbo.Cadastro
    (
    ID_Cadastro           INT NOT NULL UNIQUE IDENTITY (1,1),
    CPF                          VARCHAR(11) NOT NULL PRIMARY KEY,
    Nome                       VARCHAR(100) NOT NULL,
    Nome_Completo    VARCHAR(250) NOT NULL
    )

     

    Inserindo dados na tabela

    INSERT INTO dbo.Cadastro (CPF, Nome, Nome_Completo)
    VALUES
    ('83850588505', 'Homer Simpson', 'Homer Jay Simpson'),
    ('07688883369', 'Marge Simpson', 'Marjorie Bouvier Simpson'),
    ('16891165288', 'Bart Simpson', 'Bartholomew Jay Simpson'),
    ('71014036542', 'Lisa Simpson', 'Elisabeth Bouvier Simpson'),
    ('58447169570', 'Maggie Simpson', 'Margareth Simpson'),
    ('26303575463', 'Abe Simpson', 'Abraham Jedediah Simpson II'),
    ('50340341157', 'Mona Simpson', 'Mona Jay Simpson'),
    ('51805285505', 'Herbert Powell', 'Herbert Kennedy Simpson Powell'),
    ('80228775817', 'Edwina Winston', 'Edwina Winston'),
    ('51785776207', 'Rita Simpson', 'Rita LaFleur Simpson'),
    ('43344662651', 'Bill Simpson', 'William Arnold Simpson'),
    ('12962495656', 'Cyrus Simpson', 'Cyrus Simpson'),
    ('64657024523', 'Chet Simpson', 'Chester Oliver Simpson'),
    ('36341743408', 'Stanley Simpson', 'Stanley Simpson'),
    ('27226123487', 'Yuma Hickman', 'Yuma Hickman'),
    ('78592718422', 'Orville Simpson', 'Orville Simpson'),
    ('23228524493', 'Oswald Simpson', 'Oswald Oli Simpson'),
    ('71611427410', 'Howland Simpson', 'Howland Simpson'),
    ('70127574697', 'Eliza Simpson', 'Eliza Simpson'),
    ('17751527153', 'Mabel Simpson', 'Mabel Simpson'),
    ('48652567840', 'Abraham Simpson', 'Abraham Simpson'),
    ('31351234056', 'Hiram Simpson', 'Hiram Simpson'),
    ('38344506344', 'Arthur Simpson', 'Arthur Simpson'),
    ('96456411521', 'Patty Bouvier', 'Patricia Bouvier'),
    ('37969442641', 'Selma Bouvier', 'Selma Terwilliger Hutz McClure Stu D''Amico Bouvier'),
    ('33241658309', 'Ling Bouvier', 'Ling Bouvier'),
    ('42766902503', 'Gladys Bouvier', 'Gladys Bouvier'),
    ('55772134019', 'Jackie Bouvier', 'Jacqueline Jo-Jo Bouvier'),
    ('28208343889', 'Clancy Bouvier', 'Clancy Jo-Jo Bouvier'),
    ('37315127500', 'Veronica Bouvier', 'Veronica Hubert Bouvier'),
    ('58534216894', 'Alvarine Bisque', 'Alvarine Bisque'),
    ('97895003860', 'Ned Flanders', 'Nedward Flanders Júnior'),
    ('66885696390', 'Maude Flanders', 'Maude Flanders'),
    ('91688751696', 'Rod Flanders', 'Rod Flanders'),
    ('61879210118', 'Todd Flanders', 'Todd Flanders'),
    ('60943567130', 'Edna Krabappel', 'Edna Krabappel'),
    ('14686925266', 'Nedward Flanders', 'Nedward Flanders'),
    ('53172413594', 'Mona Flanders', 'Mona Flanders'),
    ('64508743170', 'Nediana Flanders', 'Nediana Flanders'),
    ('35537227460', 'Ted Flanders', 'Ted Flanders'),
    ('73243896789', 'Connie Flanders', 'Connie Flanders'),
    ('26466106888', 'Bonnie Flanders', 'Bonnie Flanders'),
    ('39997781210', 'Kirk Houten', 'Kirk Evelyn Van Houten'),
    ('58807349000', 'Luann Houten', 'Luann Van Houten'),
    ('48123045123', 'Milhouse Houten', 'Milhouse Mussolini Van Houten'),
    ('04148685874', 'Nana Mussolini', 'Nana Sophie Mussolini'),
    ('62911684648', 'Zack Houten', 'Norbert Van Houten')

     

    Deletando dados

    DELETE FROM dbo.Cadastro WHERE Nome = 'Homer Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Marge Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Bart Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Lisa Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Maggie Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Nedward Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Mona Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Nediana Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Ted Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Connie Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Bonnie Flanders'

     

    Inserindo dados novamente
    INSERT INTO dbo.Cadastro
    VALUES
    ('39997781210', 'Kirk Houten', 'Kirk Evelyn Van Houten'),
    ('58807349000', 'Luann Houten', 'Luann Van Houten'),
    ('48123045123', 'Milhouse Houten', 'Milhouse Mussolini Van Houten'),
    ('04148685874', 'Nana Mussolini', 'Nana Sophie Mussolini'),
    ('62911684648', 'Zack Houten', 'Norbert Van Houten'),
    ('96456411521', 'Patty Bouvier', 'Patricia Bouvier'),
    ('37969442641', 'Selma Bouvier', 'Selma Terwilliger Hutz McClure Stu D''Amico Bouvier'),
    ('33241658309', 'Ling Bouvier', 'Ling Bouvier'),
    ('42766902503', 'Gladys Bouvier', 'Gladys Bouvier'),
    ('55772134019', 'Jackie Bouvier', 'Jacqueline Jo-Jo Bouvier'),
    ('28208343889', 'Clancy Bouvier', 'Clancy Jo-Jo Bouvier'),
    ('37315127500', 'Veronica Bouvier', 'Veronica Hubert Bouvier'),
    ('83850588505', 'Homer Simpson', 'Homer Jay Simpson'),
    ('07688883369', 'Marge Simpson', 'Marjorie Bouvier Simpson'),
    ('16891165288', 'Bart Simpson', 'Bartholomew Jay Simpson'),
    ('71014036542', 'Lisa Simpson', 'Elisabeth Bouvier Simpson'),
    ('58447169570', 'Maggie Simpson', 'Margareth Simpson')

     

    Consulta e resultado (Antes de sofrer o Delete e depois dos novos Insert)

    SELECT    *
    FROM    dbo.Cadastro
    ORDER BY    ID_Cadastro

    image.thumb.png.46b532f99545afa9b74f89123e2322ec.png

    quarta-feira, 9 de outubro de 2019 15:00

Todas as Respostas

  • Deleted
    quarta-feira, 9 de outubro de 2019 15:48
  • Deleted
    quarta-feira, 9 de outubro de 2019 16:13
  • Mas qual a necessidade de renumerar a coluna? Em colunas que são sequência é comum ocorrer saltos devido aos apagamentos. Para mim não faz sentido ficar renumerando a coluna de sequência, de tempos em tempos.

    Se o que quer é exibir o conteúdo da tabela com uma sequência contínua, e considerando o valor original de ID_Cadastro, eis uma sugestão:

    -- código #3
    SELECT Ordem= row_number() over (order by ID_Cadastro), 
           demais colunas
      from dbo.Cadastro
      order by ID_Cadastro;


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    José,

    Concordo com suas palavras, ainda mais no que se refere ao uso das colunas sequências, no que se pensarmos devemos analisar a possibilidade desta coluna esta sendo utilizando em uma estrutura relacional, a qual se alterarmos as numerações poderemos quebrar qualquer lógica ou estratégia de integridade referencial.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 9 de outubro de 2019 17:06
  • Amigos, bom dia

    Creio que seja um tema antigo, mais não consegui encontrar no fórum, se possível alguém da uma ajuda agradeço.

    Possuo uma tabela no SQL SERVER onde o ID não esta em ordem, devido alguns dados deletados, essa tabela o ID não e a chave primaria, gostaria que o ID da tabela se organizassem e continua-se de onde parou nos novos dados inclusos.

    Abaixo inventei uma tabela parecida, e os passos para alguém ajudar na corrigir os ID.

    Muitos fórum informa sobre a chave ser principal não ser viável essa organização e não encontrei ninguém dando uma solução, o ID é somente uma numeração sem nenhum vinculo.

    Agradeço a todos pela atenção.

     

    Criação do Banco

    CREATE DATABASE Ambiente_Teste
    GO

     

    Criação da Tabela

    CREATE TABLE dbo.Cadastro
    (
    ID_Cadastro           INT NOT NULL UNIQUE IDENTITY (1,1),
    CPF                          VARCHAR(11) NOT NULL PRIMARY KEY,
    Nome                       VARCHAR(100) NOT NULL,
    Nome_Completo    VARCHAR(250) NOT NULL
    )

     

    Inserindo dados na tabela

    INSERT INTO dbo.Cadastro (CPF, Nome, Nome_Completo)
    VALUES
    ('83850588505', 'Homer Simpson', 'Homer Jay Simpson'),
    ('07688883369', 'Marge Simpson', 'Marjorie Bouvier Simpson'),
    ('16891165288', 'Bart Simpson', 'Bartholomew Jay Simpson'),
    ('71014036542', 'Lisa Simpson', 'Elisabeth Bouvier Simpson'),
    ('58447169570', 'Maggie Simpson', 'Margareth Simpson'),
    ('26303575463', 'Abe Simpson', 'Abraham Jedediah Simpson II'),
    ('50340341157', 'Mona Simpson', 'Mona Jay Simpson'),
    ('51805285505', 'Herbert Powell', 'Herbert Kennedy Simpson Powell'),
    ('80228775817', 'Edwina Winston', 'Edwina Winston'),
    ('51785776207', 'Rita Simpson', 'Rita LaFleur Simpson'),
    ('43344662651', 'Bill Simpson', 'William Arnold Simpson'),
    ('12962495656', 'Cyrus Simpson', 'Cyrus Simpson'),
    ('64657024523', 'Chet Simpson', 'Chester Oliver Simpson'),
    ('36341743408', 'Stanley Simpson', 'Stanley Simpson'),
    ('27226123487', 'Yuma Hickman', 'Yuma Hickman'),
    ('78592718422', 'Orville Simpson', 'Orville Simpson'),
    ('23228524493', 'Oswald Simpson', 'Oswald Oli Simpson'),
    ('71611427410', 'Howland Simpson', 'Howland Simpson'),
    ('70127574697', 'Eliza Simpson', 'Eliza Simpson'),
    ('17751527153', 'Mabel Simpson', 'Mabel Simpson'),
    ('48652567840', 'Abraham Simpson', 'Abraham Simpson'),
    ('31351234056', 'Hiram Simpson', 'Hiram Simpson'),
    ('38344506344', 'Arthur Simpson', 'Arthur Simpson'),
    ('96456411521', 'Patty Bouvier', 'Patricia Bouvier'),
    ('37969442641', 'Selma Bouvier', 'Selma Terwilliger Hutz McClure Stu D''Amico Bouvier'),
    ('33241658309', 'Ling Bouvier', 'Ling Bouvier'),
    ('42766902503', 'Gladys Bouvier', 'Gladys Bouvier'),
    ('55772134019', 'Jackie Bouvier', 'Jacqueline Jo-Jo Bouvier'),
    ('28208343889', 'Clancy Bouvier', 'Clancy Jo-Jo Bouvier'),
    ('37315127500', 'Veronica Bouvier', 'Veronica Hubert Bouvier'),
    ('58534216894', 'Alvarine Bisque', 'Alvarine Bisque'),
    ('97895003860', 'Ned Flanders', 'Nedward Flanders Júnior'),
    ('66885696390', 'Maude Flanders', 'Maude Flanders'),
    ('91688751696', 'Rod Flanders', 'Rod Flanders'),
    ('61879210118', 'Todd Flanders', 'Todd Flanders'),
    ('60943567130', 'Edna Krabappel', 'Edna Krabappel'),
    ('14686925266', 'Nedward Flanders', 'Nedward Flanders'),
    ('53172413594', 'Mona Flanders', 'Mona Flanders'),
    ('64508743170', 'Nediana Flanders', 'Nediana Flanders'),
    ('35537227460', 'Ted Flanders', 'Ted Flanders'),
    ('73243896789', 'Connie Flanders', 'Connie Flanders'),
    ('26466106888', 'Bonnie Flanders', 'Bonnie Flanders'),
    ('39997781210', 'Kirk Houten', 'Kirk Evelyn Van Houten'),
    ('58807349000', 'Luann Houten', 'Luann Van Houten'),
    ('48123045123', 'Milhouse Houten', 'Milhouse Mussolini Van Houten'),
    ('04148685874', 'Nana Mussolini', 'Nana Sophie Mussolini'),
    ('62911684648', 'Zack Houten', 'Norbert Van Houten')

     

    Deletando dados

    DELETE FROM dbo.Cadastro WHERE Nome = 'Homer Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Marge Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Bart Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Lisa Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Maggie Simpson'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Nedward Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Mona Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Nediana Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Ted Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Connie Flanders'
    DELETE FROM dbo.Cadastro WHERE Nome = 'Bonnie Flanders'

     

    Inserindo dados novamente
    INSERT INTO dbo.Cadastro
    VALUES
    ('39997781210', 'Kirk Houten', 'Kirk Evelyn Van Houten'),
    ('58807349000', 'Luann Houten', 'Luann Van Houten'),
    ('48123045123', 'Milhouse Houten', 'Milhouse Mussolini Van Houten'),
    ('04148685874', 'Nana Mussolini', 'Nana Sophie Mussolini'),
    ('62911684648', 'Zack Houten', 'Norbert Van Houten'),
    ('96456411521', 'Patty Bouvier', 'Patricia Bouvier'),
    ('37969442641', 'Selma Bouvier', 'Selma Terwilliger Hutz McClure Stu D''Amico Bouvier'),
    ('33241658309', 'Ling Bouvier', 'Ling Bouvier'),
    ('42766902503', 'Gladys Bouvier', 'Gladys Bouvier'),
    ('55772134019', 'Jackie Bouvier', 'Jacqueline Jo-Jo Bouvier'),
    ('28208343889', 'Clancy Bouvier', 'Clancy Jo-Jo Bouvier'),
    ('37315127500', 'Veronica Bouvier', 'Veronica Hubert Bouvier'),
    ('83850588505', 'Homer Simpson', 'Homer Jay Simpson'),
    ('07688883369', 'Marge Simpson', 'Marjorie Bouvier Simpson'),
    ('16891165288', 'Bart Simpson', 'Bartholomew Jay Simpson'),
    ('71014036542', 'Lisa Simpson', 'Elisabeth Bouvier Simpson'),
    ('58447169570', 'Maggie Simpson', 'Margareth Simpson')

     

    Consulta e resultado (Antes de sofrer o Delete e depois dos novos Insert)

    SELECT    *
    FROM    dbo.Cadastro
    ORDER BY    ID_Cadastro

    image.thumb.png.46b532f99545afa9b74f89123e2322ec.png

    Mesquita,

    Poderia nos explicar ou descrever o motivo de ter que refazer toda numeração?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 9 de outubro de 2019 17:09
  • Bom dia, amigos.

    Obrigado pela sugestões, vou tentar complementar aqui.

    Comecei nessa empresa e já existia essa tabela com os campo, o campo ID_Cadastro nao faz ligação com nenhuma outra tabela, pelo que sondei aqui ja foi o principal mais deixaram de usar passando para coluna CPF (Ligação com todas as tabelas), perguntei se poderiamos apagar a coluna ID pois nao se utiliza mais o campo, falaram para manter a coluna sendo que devo reiniciar-lo e manter a estrutura sempre tampando os buracos qdo deletados.

    quinta-feira, 10 de outubro de 2019 13:56
  • Deleted
    quinta-feira, 10 de outubro de 2019 14:24
  • Ontem estava com 69918022 linhas, a numeração passou disso. Isso referente somente a esse ano de 2019.


    • Editado Mesquita, Ecm quinta-feira, 10 de outubro de 2019 14:27
    quinta-feira, 10 de outubro de 2019 14:26
  • Aqui e somente na consulta que é alterado, nao conseguímos alterar no dado bruto?
    A outra sugestão foi a msm que tinha dada, em apagar a coluna e criar outra, sendo que o cara e das cavernas, nao quer alterar pois vai perder o padrão da empresa e a coluna nao vai ficar do lado correto originalmente (Primeira coluna) no sistema padrão do sistema.

    quinta-feira, 10 de outubro de 2019 15:02
  • A outra sugestão foi a msm que tinha dada, em apagar a coluna e criar outra, sendo que o cara e das cavernas, nao quer alterar pois vai perder o padrão da empresa e a coluna nao vai ficar do lado correto originalmente (Primeira coluna) no sistema padrão do sistema.

    quinta-feira, 10 de outubro de 2019 15:03
  • Deleted
    quinta-feira, 10 de outubro de 2019 15:07
  • Vou bater um papo novamente com a equipe.

    Utilizamos o SQL 2017.

    Obrigado pela ajuda!

    quinta-feira, 10 de outubro de 2019 20:28