none
Dois campos não podem ser iguais...

    Question

  • Pessoal.. Tenho uma tabela de funcionários aqui, e nela tem o campo FUNC_ID e CHEFE_ID.. Como devem ter imaginado, cada funcionário tem seu ID, e se ele for subordinado a alguém terá o código desse alguém no CHEFE_ID.. Pois bem.. Ao adicionar o usuário funciona tudo normalmente.. Porém ao editá-lo, caso eu troque o chefe dele para ELE MESMO, pronto, o danado não aparece mais nas minhas DropDown (tenho um método recursivo que popula).

    Pois bem.. Gostaria de saber se existe algum tipo de chave que faça isso na própria tabela, ou se é preciso fazer um método que valide isso no meu código..

    Obrigado!
    Tuesday, September 12, 2006 2:50 PM

All replies

  • Olá Solrac,

    Vc quer impedir que o ID do chefe seja = ao do funcionário....é isso? Neste caso vc pode usar uma constraint do tipo CHECK.

    veja um exmeplo tirado do BOL...

    D. Alter a table to add an unverified constraint

    This example adds a constraint to an existing column in the table. The column has a value that violates the constraint; therefore, WITH NOCHECK is used to prevent the constraint from being validated against existing rows, and to allow the constraint to be added.

    CREATE TABLE doc_exd ( column_a INT) 
    GO
    INSERT INTO doc_exd VALUES (-1)
    GO
    ALTER TABLE doc_exd WITH NOCHECK 
    ADD CONSTRAINT exd_check CHECK (column_a > 1)
    GO
    EXEC sp_help doc_exd
    GO
    DROP TABLE doc_exd
    GO
    
    Qualquer coisa pesquise no BOL do SQL Server por CHECK
    um abraço
    Nilton Pinheiro
    www.mcdbabrasil.com.br
     
    Tuesday, September 12, 2006 3:55 PM
  • Humm... Mas esse exemplo eh pra adicionar uma constraint quando existir uma condição que não seja válida... Mas eu quero que ele NÃO ADICIONE/ALTERE a coluna CHEFE_ID caso seja igual ao FUNC_ID.. Pode adicionar a constraint assim: CHECK (chefe_id <> func_id)??

    Ao fazer um Update assim: update tabela set chefe_id = '3' where func_id = '3' o sql server não poderia deixar, me retornando um erro,...

    valeu!!!
    Wednesday, September 13, 2006 12:55 PM