我有两张表格如下:
Job_Announcement
,定义如下:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| job_id | int(11) | NO | PRI | NULL | auto_increment |
| job_title | varchar(255) | NO | | NULL | |
| category | varchar(255) | NO | | NULL | |
| term | varchar(255) | NO | | NULL | |
| num_experiences | int(11) | NO | | NULL | |
| num_hiring | int(11) | NO | | NULL | |
| Salary | varchar(255) | NO | | NULL | |
| qualification | varchar(255) | NO | | NULL | |
| location | varchar(255) | NO | | NULL | |
| gender | varchar(255) | NO | | NULL | |
| job_content | text | NO | | NULL | |
| job_requirement | varchar(255) | NO | | NULL | |
| publish_date | date | NO | | NULL | |
| close_date | date | NO | | NULL | |
| contact_info | varchar(255) | NO | | NULL | |
| userid | varchar(255) | NO | | NULL | |
| publish | tinyint(1) | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
job_announcement_deleted
,用于存储表job_announcement
中已删除的记录
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| job_id | int(11) | NO | PRI | NULL | auto_increment |
| job_title | varchar(255) | NO | | NULL | |
| category | varchar(255) | NO | | NULL | |
| job_content | text | NO | | NULL | |
| publish_date | date | NO | | NULL | |
| close_date | date | NO | | NULL | |
| userid | varchar(255) | NO | | NULL | |
| publish | tinyint(1) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
为了将已删除的记录从job_announcement
表移到job_announcement_deleted
表,我在trigger
中定义了phpmyadmin
这样的定义:
触发器名称: before_delete_job
表: job_announcement
时间:之前
活动:删除
定义:
BEGIN
INSERT INTO job_announcement_deleted VALUES(old.job_id,old.job_title,old.category,old.job_content,old.publish_date,old.close_date,old.userid,old.publish);
END
定义者: root @ localhost
触发事件before_delete_job
正常工作,已删除的记录已移至表job_announcement_deleted
。
我的问题是如果我想将已删除的记录恢复回表job_announcement
,我定义类似的触发器定义事件,如上所述,例如。 job_announcement_restore
代码为job_announcement_deleted
但是,如果我要从job_announcement_deleted
永久删除记录,该怎么办?因为我希望用户可以选择恢复它或永久删除。
感谢。
答案 0 :(得分:0)
对于恢复,只需执行您要删除的相反过程(将数据从job_announcement
发送到DELETE FROM
)
对于perma删除,您只需要获取job_id字段,因为它会自动增加,使其对每个作业都是唯一的。
从用户获取job_id后(例如,如果他从此行中单击“删除”,则从该行中提取job_id),只需使用DELETE FROM job_announcement_deleted WHERE job_id = @job_id
,如下所示:
job_announcement_deleted
(其中@job_id将是您在此过程中先前获得的那个)
此外,您不应该将job_id发送到{{1}}表,因为该字段是自动递增的,这意味着它将添加一个新值(默认情况下递增1)字段,因此该字段没有重复项。您只需通过这样做来破坏自动增量的含义,特别是因为主键必须是唯一值。如果您获得该字段的重复值,您可能会在以后使用数据库时出现问题,所以我建议您只留下该字段未填充,因此自动增量可以完成它的工作。