none
ALTERAR campos tabela ja com dados RRS feed

  • Question

  • Pessoal  boa noite

    Fiz a criacao da seguinte tabela, mas na hora que copei os dados de outra tabela, o sql reclama das colunas que foram criadas como  unique, e realmente preciso que sejam, mesmo assim alterei para varchar, e uma ficou ate como float , agora  preciso alterar os essas colunas  para unique, mas o sql depois que copie os dados nao esta permitindo, da erro, alguem tem alguma sugestao??

    CREATE TABLE [dbo].[TB_DDR_S](
    [ID_] [int] IDENTITY(1,1) NOT NULL,  --- Precisa ser autoincremente
    [fk_id] [int] NULL,
    [Matrícula] [varchar](17)  NULL,         --- nao pode duplicar, aceitar valores repetidos
    [Usuário] [varchar](17)  NULL,
    [cgc] [int] NOT NULL,
    [Unidade] [varchar](80) NOT NULL,
    [DDD] [int] NOT NULL,
    [DDR] [varchar](10) NOT NULL,          --- este campo tambem nao pode ter valores repetidos
    [STATUS] [int] NOT NULL,

    mercredi 14 juillet 2021 01:32

Réponses

  • dr.khan,

    Veja se este exemplo poderá lhe ajudar:

    Update TabelaB
    Set NovoDDD = Concat(TabelaA.DDD+TabelaB.DDD)
    From TabelaB Inner Join TabelaA
                   On TabelaB.Codigo = TabelaA.Codigo
    Go


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

    • Marqué comme réponse dr.khan dimanche 8 août 2021 20:29
    jeudi 29 juillet 2021 00:32
    Modérateur
  • Junior  boa tarde

    Ajudou muito resolvido, obrigado.

    dr. khan,

    Disponha.


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

    • Marqué comme réponse dr.khan vendredi 13 août 2021 13:33
    mercredi 11 août 2021 23:06
    Modérateur
  • Junior  boa tarde

    Ajudou muito resolvido, obrigado.

    • Marqué comme réponse dr.khan dimanche 8 août 2021 20:29
    dimanche 8 août 2021 20:29

Toutes les réponses

  • Olá Dr. 

    Parece que está com 2 threads 'iguais' no fórum não (respondi no outro também, mas sugiro dar como sucesso o outro e continuar aqui .)? 

    Enfim , vamos lá .  

    O erro nas uniques que está se dando não será por que a tabela origem tem dados 'repetidos' na coluna ? 

    Nos informe (print se quiser ) o erro por favor.


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    mercredi 14 juillet 2021 13:39
  • bora porque o de la ja foi resolvido ai surgiu outros problemas vou encerrar o de la ta certo.
    mercredi 14 juillet 2021 13:58
  • Oi Jerfferson bom dia ja coloquei la como resolvido,

    agora tu entendeu a outra bronca???  tipo a tabela foi criada, e agora eu preciso importar dados de uma outra tabela que foi gerada a partir de uma planilha, tentei editar, mas nao ta dando certo, acredito que precisa ser linha de comando

    CREATE TABLE [dbo].[TB_DDR_S](
    [ID_] [int] IDENTITY(1,1) NOT NULL,      --- Precisa ser autoincremente( ja foi feito
    [fk_id] [int] NULL,
    [Matrícula] [varchar](17)  NULL, ----------- preciso mudar esse coluna para nao poder duplicar, atualmente ta como 
                                                 varchar (255)
    [Usuário] [varchar](17)  NULL,
    [cgc] [int] NOT NULL,
    [Unidade] [varchar](80) NOT NULL,
    [DDD] [int] NOT NULL,
    [DDR] [varchar](10) NOT NULL,  -----------  esta tambem preciso mudar para nao pode duplicar e atualmente so rechone como float quando altero o numero fica todo errado
    [STATUS] [int] NOT NUL

    mercredi 14 juillet 2021 14:04
  • oi DR. 

    Me reponde sobre o erro que está ocorrendo por favor. 

    outra coisa , coloque o seu comando de criação da tabela como está, pois não está desta forma correto?

    Coloque seu codigo de criação final. 

    Nos valide se os campos que devem ser unicos , ao serem importados não estão trazendo valores repetidos. Pode ser este o erro. 


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    mercredi 14 juillet 2021 14:32
  • SELECT  [ID]         ------ int - nao  nulo
          ,[fk_id]            ------ int - nulo 
          ,[Matrícula]      --- varchar ( 255)  preciso que essa coluna nao possa ter dados repetidos
          ,[Usuário]         ----varchar ( 255)  preciso que essa coluna nao possa ter dados repetidos
          ,[CGC]             ------ int - nao  nulo
          ,[Unidade]        ---- varchar ( 255) nulo
          ,[DDD]             ------int nao nulo
          ,[DDR]              ----- float  ----- precisoque seja varchar e nao pode repeti
          ,[STATUS] ------int nao nulo
      FROM [TeamsPhone].[dbo].[DDR2_S]


      quando altero esse campo        ,[DDR]    ----- float  ----- preciso que seja varchar e nao pode repeti,
      o numero de telefone fica todo doido tipo 3.20231e+007, quando deixo em float  fica normal, se eu tento mudar pra 
      unique  da esse erro: Tabela 'DDR2_S'
    - Não é possível modificar a tabela.  
     Conversion failed when converting from a character string to uniqueidentifier.

    ja tentei via comandos tipo alter table e tambem via editando a tabela no proprio sql 

    mercredi 14 juillet 2021 18:15
  • Dr.khan,

    Poderia nos apresentar uma pequena porção dos dados que você tem armazenada nesta tabela?

    Se possível um print ou propriamente o retorno do Management Studio no formato de tabela.


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

    mercredi 14 juillet 2021 18:28
    Modérateur
  • id      fk_id Matrícula Usuário CGC         Unidade DDD        DDR    STATUS
      122        M021408 ANNY PABLO 1654         nome da unidade  11  32023999 1
      122        M021466 ALEXANDRE LEITE     3011                nome da unidade2 11 32027777 1
                        

    mercredi 14 juillet 2021 19:24
  • A Formatação por aqui fica ruin 

    mercredi 14 juillet 2021 19:26
  • id	fk_id	Matrícula	Usuário	CGC	Unidade	DDD	DDR	STATUS
    	122	M021408	ANNY PABLO	1654	nome da unidade	11	32023999	1
    	122	M021466	ALEXANDRE LEITE	3011	nome da unidade2	11	32027777	1
    	122	M024442	CLAUDIA DOUGRAS	2888	nome da unidade 2	11	32023123	1
    

    mercredi 14 juillet 2021 19:29
  • dr.khan,

    Vou lhe dar um sugestão mais prática sem realizar a conversão de forma explícita e fazendo com que o SQL Server faça.

    Neste mesma tabela crie uma nova coluna por exemplo com o nome DDD2 já com o tipo de dados correto, depois faça justamente um Update para esta coluna copiando os dados da coluna DDD para o DDD2.

    Verifique se a formatação e os dados estão correto, se tudo estiver certo, remova a coluna DDD e renomeie a DDD2 para DDD.

    Em alguns casos este acabando sendo o cenário mais recomendável.


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

    vendredi 16 juillet 2021 12:57
    Modérateur
  • Olá Dr,

    Como está fazendo a importação dos dados para esta tabela? 

    Outra coisa , vi agora que a tabela do anunciado do post aqui estava com varchar e agora está com float?  por que esta troca ?  numero de telefone prefiro mesmo varchar....

    Qual o comando está usando para carregar os dados para esta tabela ? 


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]


    vendredi 16 juillet 2021 13:33
  • OI Jefferson

    Estou usando um update + select de para , 

    o float fica toda vez que  importo dados do excel, tipo esses dados estao em uma planilha no excel ai faco a importacao para uma tabela bkp depois mando para  nova tabela,   vou tentar fazer como vc falou criar uma nova coluna, mandar os dados para la, depois deleto a origial ....isso na mesma tabela

    lundi 19 juillet 2021 14:19
  • so preciso ver como vou fazer esse insert trazendo as mesmas informações da mesma coluna 

    tipo:

    ddd         para     ddd2

    1                           1

    2                           2

    3                           3 

    e essa ddd2 ficar de acordo com o resto dos campos da tabela e nao ficar bagucando

    lundi 19 juillet 2021 14:21
  • dr.khan,

    Cada linha de registro não possui um código ou ID?

    Se possuir basta justamente no seu Update especificar o ID ou código como elemento condicional na sua junção, algo similar ao exemplo abaixo:

    Update TabelaB
    Set NovoDDD = TabelaA.DDD
    From TabelaB Inner Join TabelaA
                   On TabelaB.Codigo = TabelaA.Codigo
    Go


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

    lundi 19 juillet 2021 17:31
    Modérateur
  • Pedro bom dia,

    Nesse caso como ficaria o update, sendo na mesma tabela, tipo 

    Update TabelaB
    Set NovoDDD = TabelaA.DDD
    From TabelaB Inner Join TabelaA
                   On TabelaB.Codigo = TabelaA.Codigo
    Go

    preciso de  concatenar os dois campoos ddd +  dddr2 e inserir na mesma tabelam no campo de nome dddr_s

    mardi 27 juillet 2021 12:13
  • dr.khan,

    Veja se este exemplo poderá lhe ajudar:

    Update TabelaB
    Set NovoDDD = Concat(TabelaA.DDD+TabelaB.DDD)
    From TabelaB Inner Join TabelaA
                   On TabelaB.Codigo = TabelaA.Codigo
    Go


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

    • Marqué comme réponse dr.khan dimanche 8 août 2021 20:29
    jeudi 29 juillet 2021 00:32
    Modérateur
  • Junior  boa tarde

    Ajudou muito resolvido, obrigado.

    • Marqué comme réponse dr.khan dimanche 8 août 2021 20:29
    dimanche 8 août 2021 20:29
  • Junior  boa tarde

    Ajudou muito resolvido, obrigado.

    dr. khan,

    Disponha.


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

    • Marqué comme réponse dr.khan vendredi 13 août 2021 13:33
    mercredi 11 août 2021 23:06
    Modérateur