sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server - Desencadenador ANTES DE INSERTAR

Pruebe siguiendo SQL Server en lugar de Trigger, que verifica la primera tabla de detalles. En caso de que falten datos en Detalles, inserta esa tabla. Como segundo paso, continúa con la inserción en la tabla de Habilidades

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 obtener más muestras en SQL Servidor en lugar de disparador por favor refiérase al ejemplo dado.

Pero tenga en cuenta mis palabras, creo que será un diseño alternativo para mantener las habilidades en una tabla maestra diferente. Y antes de insertar en los detalles, en general verificamos que el maestro exista o no. Por lo tanto, su control en general podría estar ejecutándose en el manera opuesta. Los usuarios en general insertan datos maestros primero. En este caso, los datos de la tabla Habilidades. Luego se completan los detalles.