mysql - 如何创建将删除移动到另一个表的触发器?

标签 mysql sql database database-design triggers

我有一个 MySQL 数据库,其中包含一个项目和一个 projectover 表(项目由员工完成),我需要创建一个触发器,每当从项目表中删除一个项目时,它就会被放入 projectover 表中。有人告诉我 MySQL 中触发器的语法如下:

CREATE
  [DEFINER = {user| CURRENT_USER }]
  TRIGGER trigger_name trigger_time trigger_event
  ON tbl_name FOR EACH ROW trigger_stmt

使用该模板,我会假设正确的方法是:

CREATE
  [DEFINER = {user| CURRENT_USER }]
  TRIGGER project_done trigger_time delete
  ON project FOR EACH ROW insert into projectover

沿着这些思路,我不知道将这些记录插入到新表中的操作的确切语法,我也不知道 trigger_time 是什么意思...任何帮助将不胜感激。

最佳答案

This site有一个很好的例子。

CREATE TRIGGER Employee_Trigger
AFTER delete ON employee
FOR EACH ROW
BEGIN
  insert into employee_log values(old.id,old.first_name,
   old.last_name,old.start_date,old.end_date,
   old.city,old.description,curtime());
 END

更新

注意插入语句可以更容易

Trigger docs here Insert docs here

关于mysql - 如何创建将删除移动到另一个表的触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246939/

相关文章:

sql - 如何在部署脚本的事务中包含 ALTER VIEW 语句?

sql - 默认值表达式函数何时/如何绑定(bind)到 search_path?

mysql - sql在执行group by之前显示总数

MySQL 触发器 : print a warning message when an inserted entry is greater than a value

php - 在表中找不到条目时的 Laravel undefined variable

php - 如何创建一个集中的用户数据库

mysql - 如何使用触发器递归更新字段?

mysql - 当其中一个事务语句抛出错误时,如何从处理程序回滚所有事务语句?

php - MySQL结果提供重复项,如何停止

c# - MySql "SET @variable"在 C# 代码中抛出 fatal error