(2) 编写一个触发器,当从employee表中删除一条记录,将该记录添加到employee_log表中,同时 quit_date字段值为系统当前日期
时间: 2023-09-13 10:05:22 浏览: 178
### 回答1:
可以使用MySQL的触发器实现这个功能。以下是一个示例:
```sql
CREATE TRIGGER trg_employee_delete
AFTER DELETE ON employee
FOR EACH ROW
BEGIN
INSERT INTO employee_log (employee_id, employee_name, quit_date)
VALUES (OLD.employee_id, OLD.employee_name, CURDATE());
END;
```
这个触发器会在employee表中删除一条记录之后触发,将被删除的记录的ID、姓名以及系统当前日期添加到employee_log表中。注意,这里使用的是OLD前缀来引用被删除的记录。
### 回答2:
可以使用以下的SQL语句来创建一个触发器,在从employee表中删除一条记录时将该记录添加到employee_log表中,并将quit_date字段值设置为系统当前日期:
```sql
CREATE TRIGGER trg_employee_delete
AFTER DELETE ON employee
FOR EACH ROW
BEGIN
INSERT INTO employee_log (employee_id, employee_name, quit_date)
VALUES (OLD.employee_id, OLD.employee_name, CURDATE());
END;
```
说明:
- 创建了名为trg_employee_delete的触发器。
- 触发器定义在每次从employee表中删除一条记录之后执行。
- 对于每一条被删除的记录,使用INSERT语句将其插入到employee_log表中。
- 使用OLD关键字引用被删除的记录的字段值,包括employee_id和employee_name。
- 使用CURDATE()函数获取系统当前日期,并将其作为quit_date字段的值插入到employee_log表中。
这样,每次从employee表中删除一条记录时,该记录将被添加到employee_log表中,同事quit_date字段值会设置为系统当前日期。
### 回答3:
在SQL Server中,可以使用触发器来实现当从employee表中删除一条记录时,将该记录添加到employee_log表中并将quit_date字段值设置为系统当前日期。以下是一个示例的触发器实现:
首先,创建employee_log表,该表与employee表具有相同的列:
```sql
CREATE TABLE employee_log (
id INT,
name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2),
quit_date DATE
);
```
然后,创建触发器,让它在从employee表中删除记录时触发:
```sql
CREATE TRIGGER tr_employee_delete
ON employee
FOR DELETE
AS
BEGIN
DECLARE @id INT;
DECLARE @name VARCHAR(50);
DECLARE @department VARCHAR(50);
DECLARE @salary DECIMAL(10, 2);
-- 获取被删除的记录数据
SELECT @id = id, @name = name, @department = department, @salary = salary
FROM deleted;
-- 插入到employee_log表中
INSERT INTO employee_log (id, name, department, salary, quit_date)
VALUES (@id, @name, @department, @salary, GETDATE());
END;
```
现在,当从employee表删除一条记录时,触发器(tr_employee_delete)会将该记录的数据插入到employee_log表中,并将quit_date字段的值设置为系统当前日期。
例如,删除employee表中id为100的记录:
```sql
DELETE FROM employee WHERE id = 100;
```
删除后,employee_log表中将插入与被删除记录相同的数据,并且quit_date字段将设置为当前日期。
阅读全文