我希望将start_date
和start_time
复制到latest_time
和latest_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;
我做的大部分都是错的我打赌。这是如何正常工作的,如何复制时间?
答案 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
表中插入一行。