2017-03-06 74 views
0

我想,同时增加了新的进入我的logbookstart_datestart_time复制到latest_timelatest_date

但是我也想依赖于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; 

我这样做,主要是错了,我敢打赌。这是如何正确工作的,以及如何获得复制时间?

回答

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

+0

我试过你说的,但现在我有一个新问题。帖子已更新。 – suleiman

+0

我会更新我的回答 – RMT

1

什么您要搜索的是一个Trigger,这是在响应自动调用事件的过程访问旧的价值观,你的情况在logbook表中插入一行。

+0

我试过你说的,但现在我有一个新问题。帖子已更新。 – suleiman

相关问题