Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Create Three Triggers for the tables below: Trigger 1) Trg_ProjectAudit: One for

ID: 3858978 • Letter: C

Question

Create Three Triggers for the tables below:
Trigger 1) Trg_ProjectAudit: One for Project to handle Addition, Update and Deletion from the main project table (the table that contains the most fields). Audit Table name should ProjectAudit.

Trigger 2) Trg_ActivityAudit: One for Activity to handle Addition, Update and Deletion from the main activity table (the table that contains the most fields). Audit Table name should ActivityAudit

Trigger 3) Trg_EmployeeAudit: One for Employee to handle Addition, Update and Deletion from the main employee table (the table that contains the most fields). Audit Table name should EmployeeAudit

Here are the Tables:

Create Table Employee

(

empNumber CHAR (8) PRIMARY KEY NOT NULL,

SSN CHAR (9) NULL,

firstName VARCHAR (25) NOT NULL,

lastName VARCHAR (25) NOT NULL,

address VARCHAR (50) NULL,

state CHAR (2) NULL,

zip CHAR (5) NULL,

job VARCHAR (50) NOT NULL,

CONSTRAINT checkJob CHECK (Job IN ('Cast Member', 'Engineer', 'Inspector', 'Project Manager'))

)

Create Table Project

(

projectID char(4) PRIMARY KEY NOT NULL,

projectName VARCHAR (50) NOT NULL,

fundedBudget DECIMAL(16,2) NULL,

firmFedID CHAR(9) NOT NULL,

startDate DATE NULL,

projectTypeCode CHAR(5) NOT NULL,

projectTypeDesc VARCHAR (50) NULL,

projectStatus VARCHAR(25) NULL,

CONSTRAINT checkProjStat CHECK (projectStatus IN ('Active', 'Inactive', 'Cancelled', 'On-Hold', 'Completed')),

projectEndDate DATE NULL,

projectManager CHAR(8) FOREIGN KEY REFERENCES employee(empNumber)

)

Create Table Activity

(

activityID CHAR (4) NOT NULL PRIMARY KEY,

activityName VARCHAR (50) NOT NULL,

activityTypeCode char (2) NOT NULL,

activityStatus VARCHAR (25) NULL,

CONSTRAINT checkActStat CHECK (activityStatus IN ('Active', 'Inactive', 'Cancelled', 'On-Hold', 'Completed')),

activityTypeDesc VARCHAR (50) NULL,

costToDate DECIMAL (16,2) NULL,

startDate DATE NULL,

endDate DATE NULL,

projectID char(4) FOREIGN KEY REFERENCES Project(projectID)

)

Create Table Firm

(

firmFedID char (9) NOT NULL PRIMARY KEY,

firmName varchar (50) NOT NULL,

firmAddress varchar (50) NULL

)

Create Table Job

(

projectID char (4) NOT NULL,

activityID char (4) NOT NULL,

)

Explanation / Answer

Creating Trigger Trigger_1:

Create Table ProjectAudit

(

projectID char(4) PRIMARY KEY NOT NULL,

projectName VARCHAR (50) NOT NULL,

fundedBudget DECIMAL(16,2) NULL,

firmFedID CHAR(9) NOT NULL,

startDate DATE NULL,

projectTypeCode CHAR(5) NOT NULL,

projectTypeDesc VARCHAR (50) NULL,

projectStatus VARCHAR(25) NULL,

CONSTRAINT checkProjStat CHECK (projectStatus IN

('Active', 'Inactive', 'Cancelled', 'On-Hold',

'Completed')),

projectEndDate DATE NULL,

projectManager CHAR(8) FOREIGN KEY REFERENCES

employee(empNumber)

)

CREATE TRIGGER Trg_ProjectAudit_Insert ON ProjectAudit

FOR INSERT

AS

declare @projectID char(4),

declare @projectName VARCHAR (50),

declare @fundedBudget DECIMAL(16,2),

declare @firmFedID CHAR(9),

declare @startDate DATE,

declare @projectTypeCode CHAR(5),

declare @projectTypeDesc VARCHAR (50),

declare @projectStatus VARCHAR(25),

declare @projectEndDate DATE,

declare @projectManager CHAR(8)

insert into Project values

(@projectID,@projectName,@fundedBudget,@firmFedID,@st

artDate,@projectTypeCode,@projectTypeDesc,@projectSta

tus,@projectEndDate,@projectManager);

PRINT 'AFTER INSERT trigger fired.'

GO

CREATE TRIGGER Trg_ProjectAudit_Delete ON ProjectAudit

FOR DELETE

declare @projectID char(4)

select @projectID =d.projectManager from deleted d;

Delete from Employee where empNumber=@projectID

Delete from Project where projectManager=@projectID

PRINT 'Delete trigger fired.'

GO

CREATE TRIGGER Trg_ProjectAudit_Update

ON ProjectAudit

AFTER UPDATE

AS

declare @projectID char(4)

SELECT @projectID = INSERTED.projectID   

FROM INSERTED

Update Project Set projectName='Johns&Co' where

projectID=@projectID

Creating Trigger 2

Create Table ActivityAudit

(

activityID CHAR (4) NOT NULL PRIMARY KEY,

activityName VARCHAR (50) NOT NULL,

activityTypeCode char (2) NOT NULL,

activityStatus VARCHAR (25) NULL,

CONSTRAINT checkActStat CHECK (activityStatus IN

('Active', 'Inactive', 'Cancelled', 'On-Hold',

'Completed')),

activityTypeDesc VARCHAR (50) NULL,

costToDate DECIMAL (16,2) NULL,

startDate DATE NULL,

endDate DATE NULL,

projectID char(4) FOREIGN KEY REFERENCES Project

(projectID)

)

CREATE TRIGGER Trg_ActivityAudit_Insert ON ActivityAudit

FOR INSERT

AS

declare @activityID CHAR (4),

declare @activityName VARCHAR (50),

declare @activityTypeCode char (2),

declare @activityStatus VARCHAR (25),

declare @activityTypeDesc VARCHAR (50),

declare @costToDate DECIMAL (16,2),

declare @startDate DATE,

declare @endDate DATE,

declare @projectID char(4)

Insert into Activity values

(@activityID,@activityName,@activityTypeCode,@activit

yStatus,@activityTypeDesc,@costToDate,@startDate,@end

Date,@projectID)

CREATE TRIGGER Trg_ActivityAudit_Delete ON ActivityAudit

FOR DELETE

declare @projectID char(4)

select @projectID =d.projectID from deleted d;

Delete from Employee where empNumber=@projectID

Delete from Project where projectManager=@projectID

Delete from Activity where projectID=@projectID

CREATE TRIGGER Trg_ActivityAudit_Update

ON ActivityAudit

AFTER Update

AS

declare @activityID char(4)

SELECT @activityID = INSERTED.activityID   

FROM INSERTED

Update Project Set activityName='Insert a record' where

activityID=@activityID

Creating Trigger 3

Create Table EmployeeAudit

(

empNumber CHAR (8) PRIMARY KEY NOT NULL,

SSN CHAR (9) NULL,

firstName VARCHAR (25) NOT NULL,

lastName VARCHAR (25) NOT NULL,

address VARCHAR (50) NULL,

state CHAR (2) NULL,

zip CHAR (5) NULL,

job VARCHAR (50) NOT NULL,

CONSTRAINT checkJob CHECK (Job IN ('Cast Member', 'Engineer', 'Inspector', 'Project Manager'))

)

CREATE TRIGGER Trg_EmployeeAudit_Insert ON Activity

FOR EmployeeAudit

AS

declare @empNumber CHAR (8),

declare @SSN CHAR (9),

declare @firstName VARCHAR (25),

declare @lastName VARCHAR (25),

declare @address VARCHAR (50),

declare @state CHAR (2),

declare @zip CHAR (5),

declare @job VARCHAR (50)

Insert into Employee values(@empNumber,@SSN,@firstName,@lastName,@address,@state,@zip,@job)

CREATE TRIGGER Trg_EmployeeAudit_Insert ON Activity

FOR EmployeeAudit

declare @empNumber CHAR (8)

select @empNumber =d.empNumber from deleted d;

Delete from Employee where empNumber=@empNumber

CREATE TRIGGER Trg_EmployeeAudit_Update ON Activity

FOR EmployeeAudit

declare @empNumber CHAR (8)

SELECT @empNumber= INSERTED.empNumber   

FROM INSERTED

Update Employee Set firstName='Jhon' where empNumber=@empNumber