Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server - Déclencheur AVANT INSERT

Veuillez tester le serveur SQL suivant au lieu du déclencheur qui vérifie la première table de détails. Dans le cas où il manque des données dans les détails, il insère cette table. Dans la deuxième étape, il continue avec l'insertion dans la table des compétences

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

Pour plus d'exemples sur SQL Serveur au lieu de déclencheur veuillez vous référer à l'exemple donné.

Mais s'il vous plaît notez mes mots, je pense que ce sera une conception alternative pour garder les compétences dans une table maître différente.Et avant d'insérer dans les détails, en général, nous vérifions que le maître existe ou non.Ainsi, votre contrôle en général pourrait être en cours d'exécution dans le en sens inverse. Les utilisateurs insèrent généralement les données de base en premier. Dans ce cas, les données du tableau des compétences. Ensuite, les détails sont renseignés.