--triggers
use MetroAlt
Go
Create trigger tr_CheckDelete
on MaintenanceDetail
instead of delete
As
if not exists
(Select name from sys.Tables
where name ='MaintenanceDetailDeletes')
Begin
Create table MaintenanceDetailDeletes
(
MaintenanceDetailkey int,
MaintenanceKey int,
BusServiceKey int,
EmployeeKey int,
MaintenanceDetailNote nvarchar(255)
)
End
Insert into MaintenanceDetailDeletes
(MaintenanceDetailkey,
MaintenanceKey,
BusServiceKey,
EmployeeKey,
MaintenanceDetailNote)
Select MaintenanceDetailkey,
MaintenanceKey,
BusServiceKey,
EmployeeKey,
MaintenanceDetailNote
from Deleted
Select * from MaintenanceDetail
Insert into BusService(BusServiceName)
values('oil change'),
('brakes')
Insert into Maintenance(MaintenceDate, BusKey)
values(getDate(),45)
Insert into MaintenanceDetail(MaintenanceKey, BusServiceKey, EmployeeKey, MaintenanceDetailNote)
values(IDENT_CURRENT('Maintenance'),1,8, 'dry as a bone')
Delete from MaintenanceDetail where MaintenanceDetailkey=1
Select * from MaintenanceDetail
Select * from MaintenanceDetailDeletes
Select * from BusScheduleAssignment
go
Create trigger tr_overtime on [dbo].[BusScheduleAssignment]
for insert
As
Declare @EmployeeKey int
Declare @Date Date
Declare @Count int
Select @employeeKey=EmployeeKey, @Date = BusScheduleAssignmentDate
from Inserted
Select @count=Count(EmployeeKey) from BusScheduleAssignment
where [BusScheduleAssignmentDate]=@Date and EmployeeKey = @EmployeeKey
if @count > 1
Begin
if not exists
(Select Name from sys.tables
where Name = 'Overtime')
Begin
Create table Overtime
(
BusScheduleAssignmentKey int,
BusDriverShiftKey int,
EmployeeKey int,
BusRouteKey int,
BusScheduleAssignmentDate Date,
BusKey int
)
End
Insert into Overtime (BusScheduleAssignmentKey,
BusDriverShiftKey, EmployeeKey, BusRouteKey,
BusScheduleAssignmentDate, BusKey)
Select BusScheduleAssignmentKey, BusDriverShiftKey, EmployeeKey,
BusRouteKey, BusScheduleAssignmentDate, BusKey
From Inserted
End
Insert into BusScheduleAssignment(
BusDriverShiftKey, EmployeeKey,
BusRouteKey, BusScheduleAssignmentDate, BusKey)
Values(1,4,23,GetDate(),4)
Insert into BusScheduleAssignment(
BusDriverShiftKey, EmployeeKey,
BusRouteKey, BusScheduleAssignmentDate, BusKey)
Values(2,4,23,GetDate(),4)
Select * from Overtime
--Admin
--schema
go
Create schema ManagementSchema
go
Create view managementSchema.EmployeeView
As
Select EmployeeKey, EmployeeLastName,
EmployeeFirstName, EmployeeAddress,
EmployeeCity,
EmployeeZipCode, EmployeePhone,
EmployeeEmail, EmployeeHireDate
From Employee
go
Create view ManagementSchema.BusSchedule
As
Select * from BusScheduleAssignment
Go
--roles collections of permissions
Create role ManagementRole
go
Grant Select, Insert, Update on schema::managementSchema to managementRole
Create login sconger with password='p@ssword',
default_database = metroAlt
Create user sconger for login sconger
exec sp_addrolemember managementrole, sconger
Backup database metroAlt to disk='C:\backups\MetroAlt.bak'
Restore Database metroAlt from disk='C:\backups\metroAlt'
--xml
Select * from Employee
for xml raw('Employee'), elements, root('Employees')
Wednesday, June 7, 2017
Trigger and Admin Assignments
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment