trigger.md 1.1 KB
Newer Older
M
Mars Liu 已提交
1 2 3 4
# 触发器

SmartMarket 公司的OA数据库中包含以下结构:

M
Mars Liu 已提交
5
```mysql
M
Mars Liu 已提交
6 7
create table employee(
    id serial primary key ,
M
Mars Liu 已提交
8
    name varchar(256),
M
Mars Liu 已提交
9
    dept varchar(64),
M
Mars Liu 已提交
10
    salary decimal(12, 4)
M
Mars Liu 已提交
11 12 13 14
);

create table budget(
    id serial primary key ,
M
Mars Liu 已提交
15 16
    dept varchar(64),
    amount decimal(12, 4)
M
Mars Liu 已提交
17 18 19 20 21
)
```

我们省略了无关的内容。当某个员工的工资发生变动时,我们要修改他所在部门的预算。那么以下哪个选项可以解决问题?

M
Mars Liu 已提交
22 23
<hr/>

M
Mars Liu 已提交
24
点击进入[MySQL实战练习环境](https://mydev.csdn.net/product/pod/new?image=cimg-centos7-skilltreemysql&connect=auto&create=auto&utm_source=skill)
M
Mars Liu 已提交
25 26
* `show databases` 列出所有数据库
* `show tables` 列出所有表
M
Mars Liu 已提交
27

M
Mars Liu 已提交
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
## 答案

在 employee 表添加一个 after 触发器,当员工信息变动时,重算相关部门的预算。

## 选项

### A

在 budget 表添加触发器,当员工信息变动时,重算相关部门的预算。

### B

将预算总额字段变成计算列,通过统计员工工资生成。

### C

将员工信息表的工资字段设置为部门预算总额的外键引用字段,并设置级联更新。