none
Deletar somente um registro da tabela e não a linha inteira

    Question

  • Ola pessoal ...

    Estou com um problema, eu nao estou conseguindo deletar um campo da tabela, e sim a linha inteira...

    Eu gostaria de deletar somente um nome da tabela e nao a linha inteira...

    obrigado,
    Tuesday, March 09, 2010 12:31 AM

Answers

  • Você esta querendo excluir um campo da sua tabela?
    Tipo um "DROP COLUMN"?
    Ou simplemente atribuir NULL ao campo?
    Nos dê mais detalhes.
    Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.
    Tuesday, March 09, 2010 12:46 AM
  • Jackson.Thomas,
    Boa noite!

    Veja se eu entendi bem, você quer deletar uma coluna ou uma informação existente em uma linha de registro? Segue abaixo um exemplo para você excluir a COLUNA de uma tabela ou ATUALIZAR UM CAMPO de uma linha de uma determinada tabela.

    -- DELETAR UMA COLUNA INTEIRA DE UMA TABELA
    ALTER TABLE TABELA DROP COLUMN COLUNA
    
    -- ATUALIZAR UM CAMPO DE UMA LINHA DE UMA DETERMINADA TABELA
    UPDATE TABELA
    SET CAMPO = VALOR_DESEJADO
    WHERE CONDIÇÃO QUE ATENDE SUA ATUALIZAÇÃO
    ATENÇÃO: O primeiro exemplo DROPA a coluna inteira da tabela, ou seja, exclui da tabela.

    Deletar um campo de uma tabela se eu entendi é a primeira opção, agora se você quiser deletar uma célula de uma linha de registro, não tem como você fazer, a não ser realizar um UPDATE para um valor NULL ou 0 (zero).

    Espero ter lhe ajudado.


    Grande Abraço,
    Gabriel B Azevedo | Especializando em Engenharia de Software e Banco de Dados|
    gabriel.ccomputacao@hotmail.com
    http://gbabarroso.spaces.live.com/default.aspx
    Classifique as respostas. O seu feedback é imprescindível. Obrigado!
    Tuesday, March 09, 2010 12:55 AM
  • Aé.... nao pode deletar uma célula da tabela !!!

    Eu achei q se eu coloca-se

    DELETE Campo1 FROM TABELA

    WHERE

    Campo1 = @valor

    Mas vejam o que eu quero fazer :

    ALTER PROCEDURE SP_D_DELETA_FOTO
    	@foto VARCHAR(100),
    	@id INT
    AS
    UPDATE MI_CADASTRO_FOTOS MF
    SET @foto = ''
    LEFT JOIN MI_CADASTRA_IMOVEIS CI ON CI.CI_N_ID = MF.MF_CI_N_ID
    INNER JOIN MI_CADASTRA_PROPRIETARIO CP ON CP.CP_N_ID = CI.CI_CP_N_IC
    
    
    WHERE
    
    CD_N_ID = @id

    Entao eu tenho uma tabela com 30 campos mas eu queria q o meu codigo fosse dinamico e q a variavel @foto service para todos os campos da minha tabela.. E esta dando erro..
    Tuesday, March 09, 2010 1:00 AM

All replies

  • Você esta querendo excluir um campo da sua tabela?
    Tipo um "DROP COLUMN"?
    Ou simplemente atribuir NULL ao campo?
    Nos dê mais detalhes.
    Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.
    Tuesday, March 09, 2010 12:46 AM
  • Tipo assim, eu tenho uma tabela com com 5 campos: nome, telefone, celular, endereço e email. Em algumas linhas eu preciso apagar somente o celular .... como que eu faço para apagar o celular mas sem precisar de apagar os outros campos ?

    Tuesday, March 09, 2010 12:51 AM
  • Boa noite,

    Vc quer apagar o campo da tabela ou os dados do campo da tabela?

    Abs.


    Vinicius Fonseca. MCTS - Sql Server 2005 / ITIL Classifique as respostas.
    Tuesday, March 09, 2010 12:51 AM
  • Jackson.Thomas,
    Boa noite!

    Veja se eu entendi bem, você quer deletar uma coluna ou uma informação existente em uma linha de registro? Segue abaixo um exemplo para você excluir a COLUNA de uma tabela ou ATUALIZAR UM CAMPO de uma linha de uma determinada tabela.

    -- DELETAR UMA COLUNA INTEIRA DE UMA TABELA
    ALTER TABLE TABELA DROP COLUMN COLUNA
    
    -- ATUALIZAR UM CAMPO DE UMA LINHA DE UMA DETERMINADA TABELA
    UPDATE TABELA
    SET CAMPO = VALOR_DESEJADO
    WHERE CONDIÇÃO QUE ATENDE SUA ATUALIZAÇÃO
    ATENÇÃO: O primeiro exemplo DROPA a coluna inteira da tabela, ou seja, exclui da tabela.

    Deletar um campo de uma tabela se eu entendi é a primeira opção, agora se você quiser deletar uma célula de uma linha de registro, não tem como você fazer, a não ser realizar um UPDATE para um valor NULL ou 0 (zero).

    Espero ter lhe ajudado.


    Grande Abraço,
    Gabriel B Azevedo | Especializando em Engenharia de Software e Banco de Dados|
    gabriel.ccomputacao@hotmail.com
    http://gbabarroso.spaces.live.com/default.aspx
    Classifique as respostas. O seu feedback é imprescindível. Obrigado!
    Tuesday, March 09, 2010 12:55 AM
  • Aé.... nao pode deletar uma célula da tabela !!!

    Eu achei q se eu coloca-se

    DELETE Campo1 FROM TABELA

    WHERE

    Campo1 = @valor

    Mas vejam o que eu quero fazer :

    ALTER PROCEDURE SP_D_DELETA_FOTO
    	@foto VARCHAR(100),
    	@id INT
    AS
    UPDATE MI_CADASTRO_FOTOS MF
    SET @foto = ''
    LEFT JOIN MI_CADASTRA_IMOVEIS CI ON CI.CI_N_ID = MF.MF_CI_N_ID
    INNER JOIN MI_CADASTRA_PROPRIETARIO CP ON CP.CP_N_ID = CI.CI_CP_N_IC
    
    
    WHERE
    
    CD_N_ID = @id

    Entao eu tenho uma tabela com 30 campos mas eu queria q o meu codigo fosse dinamico e q a variavel @foto service para todos os campos da minha tabela.. E esta dando erro..
    Tuesday, March 09, 2010 1:00 AM
  • Fiz assim


    ALTER PROCEDURE SP_D_DELETA_FOTO
    	@foto VARCHAR(100),
    	@id INT
    AS
    UPDATE MI_CADASTRA_FOTOS 
    SET @foto = NULL
    FROM MI_CADASTRA_PROPRIETARIO CP
    INNER JOIN MI_CADASTRA_IMOVEL CI ON CP.CP_N_ID = CI.CI_CP_N_ID
    LEFT JOIN MI_CADASTRA_FOTOS CF ON CF.CF_CI_N_ID = CI.CI_N_ID
    
    WHERE
    
    CP.CP_N_ID = @id


    Valeu..
    Tuesday, March 09, 2010 1:42 AM
  • Verifique se o seguinte exemplo pode te ajudar.
    --cria a tabela
    create table teste(cod int, nome varchar(50))
    --cria a procedure
    CREATE procedure stpTeste @cod int, @coluna varchar(100)
    as
    declare @String Nvarchar(4000)

    set @String = 'UPDATE Teste
     set ' + @coluna + ' =  ''''
     where cod = ' + cast(@cod as varchar)
    exec sp_executesql @String
     
     
     
     --insere um registro de teste
    insert into teste
    select 1,'Fabricio França Lima'

    -- visualizando  
    select * from teste

     --fazendo um update na coluna 'nome' para '' do registro com cod 1 
    exec stpTeste 1, 'nome'
     
    --conferindo
    select * from teste

    Fabrício França Lima | MCP, MCTS, MCITP | http://fabriciodba.spaces.live.com/
    Tuesday, March 09, 2010 1:45 AM
  • Fabricio o codigo exec sp_executesql eu jogo dentro da stored procedure ?
    Tuesday, March 09, 2010 2:10 AM
  • Isso!!! Foi mal. Deveria ter colocado um BEGIN END na SP.

    CREATE procedure stpTeste @cod int, @coluna varchar(100)
    as
    BEGIN
    declare @String Nvarchar(4000)

    set @String = 'UPDATE Teste
     set ' + @coluna + ' =  ''''
     where cod = ' + cast(@cod as varchar)
    exec sp_executesql @String

    END

    Fabrício França Lima | MCP, MCTS, MCITP | http://fabriciodba.spaces.live.com/
    Tuesday, March 09, 2010 4:43 PM