Php MYSQL触发器()与永久删除
我有两个表格如下:Php MYSQL触发器()与永久删除,php,mysql,database,Php,Mysql,Database,我有两个表格如下: 表Job\u Announcement用于存储有关Job的信息,定义如下: +-----------------+--------------+------+-----+---------+----------------+ |字段|类型|空|键|默认|额外| +-----------------+--------------+------+-----+---------+----------------+ |作业id | int(11)| NO | PRI | NULL
Job\u Announcement
用于存储有关Job的信息,定义如下:
+-----------------+--------------+------+-----+---------+----------------+
|字段|类型|空|键|默认|额外|
+-----------------+--------------+------+-----+---------+----------------+
|作业id | int(11)| NO | PRI | NULL |自动增量|
|职位名称| varchar(255)|否|空||
|类别| varchar(255)| NO | | NULL ||
|术语| varchar(255)| NO | | NULL ||
|num|u经验| int(11)| NO | | NULL ||
|雇用人数|整数(11)|否|空||
|薪水| varchar(255)|否| |空||
|限定| varchar(255)|否| |空||
|位置| varchar(255)| NO | | NULL ||
|性别| varchar(255)|否| |空||
|作业|内容|文本|否|空||
|工作要求| varchar(255)|否|空||
|发布日期|日期|否| |空||
|结束日期日期否无效|
|联系方式| varchar(255)|否| |空||
|userid | varchar(255)| NO | | NULL ||
|发布| tinyint(1)|否| |空||
+-----------------+--------------+------+-----+---------+----------------+
job\u announcement\u deleted
,用于存储表job\u announcement
+--------------+--------------+------+-----+---------+----------------+
|字段|类型|空|键|默认|额外|
+--------------+--------------+------+-----+---------+----------------+
|作业id | int(11)| NO | PRI | NULL |自动增量|
|职位名称| varchar(255)|否|空||
|类别| varchar(255)| NO | | NULL ||
|作业|内容|文本|否|空||
|发布日期|日期|否| |空||
|结束日期日期否无效|
|userid | varchar(255)| NO | | NULL ||
|发布| tinyint(1)|否| |空||
+--------------+--------------+------+-----+---------+----------------+
job\u announcement
表移动到job\u announcement\u deleted
表,我在phpmyadmin
中定义了trigger
定义,如下所示:
触发器名称:删除作业之前
表格:工作公告
时间:之前
事件:删除
定义:
开始
将删除的值(old.job\u id、old.job\u title、old.category、old.job\u content、old.publish\u date、old.close\u date、old.userid、old.publish)插入到job\u公告中;
结束
定义者:root@localhost
删除作业之前的触发事件工作正常,删除的记录移动到表作业公告\u deleted
我的问题是,如果我想将删除的记录还原回表job\u announcement
,我会像上面一样定义类似的触发定义事件,例如job\u announcement\u restore
为tablejob\u announcement\u deleted
定义记录。但是,如果我想从job\u announcement\u deleted
永久删除记录,我该怎么办?因为我希望用户可以选择恢复它或永久删除它
谢谢。对于恢复,只需执行与删除相反的过程(将数据从作业公告
发送到作业公告
)
对于perma delete,您只需要获得job_id字段,因为它是自动递增的,使它对于每个作业都是唯一的
从用户处获取作业id后(例如,如果他单击此行中的“删除”,您将从该行中提取作业id),只需像这样使用delete from
:
DELETE FROM job_announcement_deleted WHERE job_id = @job_id
(其中@job_id将是您在流程早期获得的)
此外,您不应该将作业id发送到job\u announcement\u deleted
表,因为该字段是自动递增的,这意味着它将为该字段添加一个新值(默认递增1),因此该字段没有重复项。这样做只会破坏自动递增的含义,特别是因为主键必须是唯一的值。如果该字段的值重复,您可能会在以后的数据库中遇到问题,因此我建议您将该字段保留为未填充状态,以便自动增量可以完成其工作。对于恢复,只需执行与删除相反的过程(将数据从作业公告\u删除发送到作业公告)
对于perma delete,您只需要获得job_id字段,因为它是自动递增的,使它对于每个作业都是唯一的
从用户处获取作业id后(例如,如果他单击此行中的“删除”,您将从该行中提取作业id),只需像这样使用delete from
:
DELETE FROM job_announcement_deleted WHERE job_id = @job_id
(其中@job_id将是您在流程早期获得的)
此外,您不应该将作业id发送到job\u announcement\u deleted
表,因为该字段是自动递增的,这意味着它将为该字段添加一个新值(默认递增1),因此该字段没有重复项。这样做只会破坏自动递增的含义,特别是因为主键必须是唯一的值。你可以吃鳟鱼