前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试382】请编写触发器:每当在EMPLOYEES表中插入一行数据时,相应部门的职工总人数就加1。

【DB笔试面试382】请编写触发器:每当在EMPLOYEES表中插入一行数据时,相应部门的职工总人数就加1。

作者头像
AiDBA宝典
发布2022-02-22 15:01:55
8280
发布2022-02-22 15:01:55
举报
文章被收录于专栏:小麦苗的DB宝专栏

Q

题目

现有如下两个表:

代码语言:javascript
复制
EMPLOYEES(EID,NAME,DEPTNO)
DEPARTMENTS(DEPTNO,DEPTNAME,TOTALNUMBER)

EMPLOYEES描述了职工编号、姓名和所在部门编号;DEPARTMENTS描述了部门编号、名称和职工总人数。

请编写触发器:每当在EMPLOYEES表中插入一行数据时,相应部门的职工总人数就加1。

A

答案

本题考察了后触发器的编写。创建DML触发器的一般语法是:

代码语言:javascript
复制
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
ON [schema.] table_name 
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
trigger_body; 

BEFORE和AFTER指出触发器的触发时机为前触发还是后触发,前触发是在执行触发事件之前触发,后触发是在执行触发事件之后触发当前所创建的触发器。最终触发器如下所示:

代码语言:javascript
复制
CREATE TRIGGER INSERT_TRIGGER
  AFTER INSERT ON EMPLOYEES
BEGIN
  UPDATE DEPARTMENTS T
     SET T.TOTALNUMBER = T.TOTALNUMBER + 1
   WHERE T.DEPTNO = :NEW.DEPTNO;
END;

DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档