sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server - FØR INDSÆT Trigger

Test venligst følgende SQL Server i stedet for trigger, som kontrollerer den første detaljetabel. Hvis der mangler data i Detaljer, indsætter den denne tabel. Som andet trin fortsætter den med indsættelse i færdighedstabellen

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

For flere eksempler på SQL Server i stedet for trigger henvises til givet eksempel.

Men læg venligst mærke til mine ord, jeg tror, ​​det vil være et alternativt design at beholde færdigheder i en anden master-tabel. Og før vi indsætter detaljer, kontrollerer vi generelt, at masteren eksisterer eller ej. Så din kontrol generelt kan køre i modsat vej.Brugere indsætter generelt stamdata først. I dette tilfælde færdighedstabellens data. Så udfyldes detaljerne.




  1. Opret tabeller med dynamiske navne via lagret procedure

  2. [OPDATERET 2020-01-23] Microsoft Office 365 Build 1912 bryder ODBC-linkede tabellers identitet

  3. MySQL Query ORDER BY visse værdier før andre

  4. mysql-adgangskoden ødelægger min dump