1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Criar uma Trigger - SQL Server

Discussão em 'Programação' iniciada por diog0silva, 24 de Março de 2009. (Respostas: 4; Visualizações: 5093)

  1. diog0silva

    diog0silva Power Member

    Boas.

    Tou a fazer uma base de dados em SQL Server e tou a querer fazer mais do que aquilo que sei, mas se alguém puder ajudar agradeço.

    Quero criar uma trigger que, quando for adicionado um novo registo à tabela tab_atleta, automaticamente preencha o campo atl_escalao da tabela da seguinte forma:

    if atl_datanasc < 1996 then
    atl_escalao = "Juvenil"
    else
    atl_escalao = "Iniciado"

    Não é bem assim a condição, mas se alguém conseguir fazer com esta condição eu depois desenrasco-me. É que eu não sei mesmo a sintaxe das triggers em SQL Server, sei alguma coisa de triggers mas em Oracle.

    Cumprimentos,
    Diogo Silva
     
  2. AliFromCairo

    AliFromCairo Power Member

    Precisas de um trigger AFTER INSERT. Podes ver exemplos aqui.
     
  3. diog0silva

    diog0silva Power Member

    Será qualquer coisa como:

    CREATE TRIGGER auto_escalao
    ON dbo.tab_atleta
    AFTER Insert, Update
    AS
    ...
    if then else

    Mas tipo, como é que se faz referência ao campo no SQL Server? No Oracle sei que é mais ou menos assim:

    If :NEW.atl_datanasc < 01.01.1996 then
    :NEW.atl_escalao = "Juvenil"
    else
    :NEW.atl_escalao = "Iniciado"

    Alguém que ajude, preciso mesmo de fazer isto.

    Obrigado.
     
    Última edição: 25 de Março de 2009
  4. kzip

    kzip Power Member

    Nos triggers podes saber o que foi inserido/modificado através de consultas à tabela "inserted".

    Na condição "ON" tens de colocar a chave primária da tabela.

    Código:
    CREATE TRIGGER auto_escalao
    ON dbo.tab_atleta
    AFTER Insert, Update
    AS
    
    UPDATE dbo.tab_atleta
    SET atl_escalao = CASE WHEN atl_datanasc < '19960101' THEN 'Juvenil' ELSE 'Iniciado' END
    FROM dbo.tab_atleta A JOIN inserted B
    ON A.ID = B.ID
     
  5. diog0silva

    diog0silva Power Member

    Obrigadão =)
     

Partilhar esta Página