现有如下两个关系模式:
Employees(Eid,Name,DeptNO)
Departments(DeptNO,DeptName,TotalNumber)
Employees关系模式描述了职工编号、姓名和所在部门编号;Departments关系模式描述了部门编号、名称和职工总人数。
请按SQL Server所采用的Tansact-SQL语法格式编写实现具有功能的后触发型触发器:每当在Employees表中插入一行数据时,相应部门的职工总人数就加1。
参考答案:create trigger sql_tri on employees for insert as
declare @ eid varchar(11)
declare @ name varchar(20)
declare @ deptno varchar(11)
declare yjy cursor for
select * from inserted
open yjy
fetch next from yjy into @ eid,@ name,@ deptno
while @ @ fetch_status=0
begin
update departments
set totalnumber=totalnumber+1
where deptno= @ deptno
fetch next from yjy into @ eid,@ name,@ deptno
end
close yjy
deallocate yjy
解析:
本题考查了后触发器的Transact-SQL语句。其语法格式为:
CREATE TRIGGER触发器名称
ON |表名| 视图名|
[WITH ENCRYPTION]
AS
SQL语句
AFTER和FOR,指定触发器只有在引发的SQL语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后,才执行此触发器,即后触发型触发器。