我想在创建条目时更新其他表

时间:2017-03-06 16:31:51

标签: mysql triggers

我希望将start_datestart_time复制到latest_timelatest_date中,同时在我的logbook中添加新条目。
但我也希望所有参赛作品都依赖logbook.logbook_index_id = logbook_index.id

mysql> describe logbook;
+-------------------------------+-----------------------+------+-----+---------+----------------+
| Field                         | Type                  | Null | Key | Default | Extra          |
+-------------------------------+-----------------------+------+-----+---------+----------------+
| id                            | int(10) unsigned      | NO   | PRI | NULL    | auto_increment |
| logbook_index_id              | int(10) unsigned      | NO   |     | NULL    |                |
| start_date                    | date                  | NO   |     | NULL    |                |
| start_time                    | time                  | NO   |     | NULL    |                |


mysql> describe logbook_index;
+--------------------+----------------------+------+-----+---------+----------------+
| Field              | Type                 | Null | Key | Default | Extra          |
+--------------------+----------------------+------+-----+---------+----------------+
| id                 | int(10) unsigned     | NO   | PRI | NULL    | auto_increment |
| first_date         | date                 | NO   |     | NULL    |                |
| first_time         | time                 | NO   |     | NULL    |                |
| latest_date        | date                 | NO   |     | NULL    |                |
| latest_time        | time                 | NO   |     | NULL    |                |
+--------------------+----------------------+------+-----+---------+----------------+

atm我到目前为止......

create trigger update_dates after insert on logbook
for each row update logbook_index
set latest_date = start_date where logbook_index.id = logbook_index_id;

我做的大部分都是错的我打赌。这是如何正常工作的,如何复制时间?

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题: 为此,我建议使用trigger

您可以在插入的表上放置AFTER INSERT触发器,在触发器内可以将更新放到另一个表中。

要从新插入记录中访问变量,您需要执行以下操作:

UPDATE logbook_index 
SET latest_date = NEW.start_date 
WHERE logbook_index.id = NEW.logbook_index_id;

注意用于访问新插入记录的关键字NEW

如果您使用AFTER UPDATE触发器,则可以使用OLD

访问旧值

答案 1 :(得分:1)

您要搜索的是Trigger,这是一个自动调用以响应事件的过程,在您的情况下,在logbook表中插入一行。