Trigger: It is a database object which executes any DML(Insert, Update, Delete) operation occurs on a table. There are two types of triggers: Instead of trigger and After trigger. Here we will use after trigger means it executes when server completes an action. One more interesting point is magic tables:
inserted
and
deleted
. When any DML operation on a table(Table2) happens it executes a trigger. Then inside trigger you want to fetch what are the data inserted, here inserted table plays vital role likewise for deleted(when record deletes).
Following trigger object created on
Table2
. Means when a record will insert on
Table2
then below object will execute.
CREATE TRIGGER trgAfterInsert on Table2
FOR INSERT
AS
declare @empid int, @empname varchar(55);
select @empid=i.Column1 from inserted i;
select @empname=i.Column2 from inserted i;
INSERT INTO Table3
SELECT Capacity.[SPOC-Partner],
COUNT(PMKVY.CentreID) as Candidate,
COUNT(case when [Aadhar Validation-Aadhar Number Validated] = 'Yes' then 1 end) as Validated,
COUNT(case when [Result Approved by SSC] = 'Pass' then 1 end) as Results_Pass,
COUNT(case when [Result Approved by SSC] = 'Fail' then 1 end) as Results_Fail,
COUNT(case when [Result Approved by SSC] = 'No Value' then 1 end) as Results_NA,
SUM(case when [BankAcountNumber] IS NULL then 0 else 1 end) as Bank,
COUNT(case when [Certified] = 'Yes' then 1 end) as Certified,
COUNT(case when [Monetary Reward Tracker-NSDC Processed] = 'Yes' then 1 end) as NSDC_Certified,
SUM(case when [Monetary Reward Tracker-Disbursement List] = '0' then 0 else 1 end) as DL,
Capacity.[Total Target]
FROM PMKVY
INNER JOIN Capacity ON PMKVY.CentreID=Capacity.[Training Centre ID]
GROUP BY Capacity.[SPOC-Partner],Capacity.[Total Target]
Suggestion: If you are not performing any data with Table2 inside trigger then you can write same code inside a stored procedure. Then call it when you are performing insert operation with
Table2
table.