gpt4 book ai didi

php - MYSQL Trigger()与永久删除

转载 作者:行者123 更新时间:2023-11-30 21:54:32 24 4
gpt4 key购买 nike

我有两个表,如下所示:


Job_Announcement用于存储有关Job的信息,定义如下:

+-----------------+--------------+------+-----+---------+----------------+
| 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_restorejob_announcement_deleted,如果我想从job_announcement_deleted永久删除记录,该怎么办?因为我希望用户可以选择恢复它或永久删除它。

谢谢。

最佳答案

对于还原,只需执行与删除操作相反的过程(将数据从job_announcement_deleted发送到job_announcement

对于永久删除,您只需要获取job_id字段,因为它会自动增强,因此对于每个作业都是唯一的。

从用户那里获取job_id之后(例如,如果他单击“删除”,则从该行中提取job_id),就可以这样使用DELETE FROM

DELETE FROM job_announcement_deleted WHERE job_id = @job_id 


(其中@job_id将是您在此过程中较早获得的那个)

另外,您不应该将job_id发送到 job_announcement_deleted表,因为该字段是自动递增的,这意味着它将为该字段添加一个新值(默认情况下递增1),因此该字段没有重复项领域。这样做只会破坏自动增量的含义,特别是因为主键必须是唯一值。如果您对该字段获取重复的值,以后可能会遇到数据库问题,因此我建议您不要填写该字段,以便自动增量可以完成此工作。

关于php - MYSQL Trigger()与永久删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45797181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com