找不到匹配项时触发mysql

时间:2014-03-13 10:08:16

标签: mysql triggers

我正在尝试设置一个mysql触发器。所以我们假设表格就像这样

mysql> explain users;
+------------+-------------+------+-----+-------------------+-----------------------------+
| Field      | Type        | Null | Key | Default           | Extra                       |
+------------+-------------+------+-----+-------------------+-----------------------------+
| id         | int(11)     | NO   | PRI | NULL              | auto_increment              |
| name       | varchar(30) | YES  |     | NULL              |                             |
| age        | int(11)     | YES  |     | NULL              |                             |
| purge_date | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+-------------+------+-----+-------------------+-----------------------------+

mysql> explain users_details;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(30) | YES  |     | NULL    |                |
| age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

因此,当从users_details表中删除某些内容时,我设置的触发器将在users表上创建一个NOW的purge_date。这很好。

问题是有时user_details表的数据不正确,然后用户更新它,所以如果他们重新插入数据我需要删除purge_date。现在我已经做了这个触发器

CREATE TRIGGER purge_fix AFTER INSERT ON users_details
FOR EACH ROW
BEGIN
    UPDATE users
        SET purge_date= '0000-00-00 00:00:00'
        WHERE users.name = NEW.name;
END;

哪个工作正常,但在某些情况下,users_details表和users表之间没有链接(它将在稍后阶段创建)所以我的问题是,因为触发器在某些情况下会失败(这是100%罚款我,我会破坏触发失败的东西吗?

0 个答案:

没有答案