Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server - ANTES DE INSERIR Acionador


Por favor, teste o SQL Server em vez do gatilho, que verifica a primeira tabela de detalhes. Caso haja dados ausentes em Detalhes, ele insere essa tabela.
CREATE Trigger MySkillsInsteadOfInsert on dbo.MySkills Instead Of Insert
AS
Begin

    insert into MySkills_details (
        EmpId -- and other relevant columns
    )
    select i.EmpId -- and other relevant columns
    from inserted i
    left join MySkills_details d on i.EmpId = d.EmpId
    where d.EmpId is null

    Insert Into MySkills(EmpId) -- and other relevant columns
    Select EmpId -- and other relevant columns
    From inserted i;

End

Para mais exemplos em SQL Servidor em vez de gatilho consulte o exemplo dado.

Mas observe minhas palavras, acho que será um design alternativo para manter as habilidades em uma tabela mestra diferente. E antes de inserir em detalhes, em geral verificamos se o mestre existe ou não. sentido oposto. Os usuários em geral inserem os dados mestre primeiro. Nesse caso, os dados da tabela de habilidades. Em seguida, os detalhes são preenchidos.