Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server – BEFORE INSERT-Trigger

Bitte testen Sie den folgenden SQL Server anstelle von Trigger, der die erste Detailtabelle überprüft. Falls Daten in den Details fehlen, fügt er diese Tabelle ein. Im zweiten Schritt wird mit dem Einfügen in die Skills-Tabelle fortgefahren

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

Weitere Beispiele finden Sie unter SQL Server statt Trigger beziehen Sie sich bitte auf das angegebene Beispiel.

Aber beachten Sie bitte meine Worte, ich denke, es wird ein alternatives Design sein, Fähigkeiten in einer anderen Master-Tabelle zu speichern. Und bevor wir Details einfügen, überprüfen wir im Allgemeinen, ob der Master existiert oder nicht umgekehrt. Benutzer geben im Allgemeinen zuerst Stammdaten ein. In diesem Fall die Daten der Skills-Tabelle. Dann werden die Details ausgefüllt.