mysql在bsalary表上创建delete触发器del_salary,实现当删除职工信息表中的某个职工的记录时,对应职工工资信息表中的所有有关此职工的工资记录都被删除,并查看是否创建成功
时间: 2024-12-10 12:32:23 浏览: 12
在MySQL中,可以使用`DELIMITER`语句来设置触发器的分隔符,因为默认的分隔符不是`;`,然后定义一个`DELIMITER`触发器。以下是如何创建一个名为`del_salary`的删除触发器,当删除bsalary表中的记录时,同时删除职工信息表中的相关记录:
```sql
DELIMITER //
CREATE TRIGGER del_salary
AFTER DELETE ON bsalary
FOR EACH ROW
BEGIN
DELETE FROM bsalary WHERE employee_id = OLD.employee_id; -- 删除工资信息表中对应的记录
END;
DELIMITER ;
```
在这个触发器中,`OLD.employee_id`代表被删除的员工id,用于匹配并删除bsalary表中相应的记录。
要确认触发器是否创建成功,你可以运行如下命令:
```sql
SHOW TRIGGERS LIKE 'del_salary'; -- 查看是否存在名为'del_salary'的触发器
```
如果结果中有`del_salary`触发器,那就说明创建成功了。
相关问题
使用MySQL 语句在 salary_management_system数据库中创建4个数据表 tbl_departments、tbl_rank_ salary、tbl_employees、tb_salary。
创建 MySQL 数据库中的四个表格,需要使用 SQL 的 `CREATE TABLE` 语句。以下是每个表格的基本结构:
1. tbl_departments 表(部门信息)
```sql
CREATE TABLE tbl_departments (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
manager_id INT,
FOREIGN KEY (manager_id) REFERENCES tbl_employees(id)
);
```
2. tbl_ranks_salary 表(职位和薪资等级)
```sql
CREATE TABLE tbl_ranks_salary (
id INT AUTO_INCREMENT PRIMARY KEY,
rank_name VARCHAR(50),
min_salary DECIMAL(10, 2),
max_salary DECIMAL(10, 2)
);
```
3. tbl_employees 表(员工信息,包含部门关联)
```sql
CREATE TABLE tbl_employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department_id INT,
rank_id INT,
FOREIGN KEY (department_id) REFERENCES tbl_departments(id),
FOREIGN KEY (rank_id) REFERENCES tbl_ranks_salary(id)
);
```
4. tb_salary 表(员工工资记录)
```sql
CREATE TABLE tb_salary (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
month DATE,
amount DECIMAL(10, 2),
FOREIGN KEY (employee_id) REFERENCES tbl_employees(id)
);
```
3.使用MySQL 语句在 salary_management_system数据库中创建4个数据表 tbl_departments、tbl_rank_ salary、tbl_employees、tb_salary。
在MySQL中创建这些表格的SQL语句会分别如下所示:
1. 创建 tbl_departments (部门) 表格:
```sql
CREATE TABLE tbl_departments (
id INT AUTO_INCREMENT PRIMARY KEY,
department_name VARCHAR(50) NOT NULL
);
```
2. 创建 tbl_ranks_salary (职位工资等级) 表格:
```sql
CREATE TABLE tbl_ranks_salary (
rank_id INT AUTO_INCREMENT PRIMARY KEY,
rank_name VARCHAR(50),
min_salary DECIMAL(10, 2),
max_salary DECIMAL(10, 2)
);
```
3. 创建 tbl_employees (员工) 表格:
```sql
CREATE TABLE tbl_employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department_id INT,
rank_id INT,
FOREIGN KEY (department_id) REFERENCES tbl_departments(id),
FOREIGN KEY (rank_id) REFERENCES tbl_ranks_salary(rank_id)
);
```
4. 创建 tb_salary (员工薪资) 表格(假设薪资记录包含时间信息,如月度薪资):
```sql
CREATE TABLE tb_salary (
salary_id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
salary_amount DECIMAL(10, 2),
month DATE,
FOREIGN KEY (employee_id) REFERENCES tbl_employees(employee_id)
);
```
阅读全文