mysql - 我希望在创建条目时更新另一个表

标签 mysql triggers

我希望将 start_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;

我敢打赌,我做的大部分都是错的。它如何正确工作以及如何复制时间?

最佳答案

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

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

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

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

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

如果您使用 AFTER UPDATE 触发器,则可以使用 OLD 访问旧值

关于mysql - 我希望在创建条目时更新另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630760/

相关文章:

php - 按日期排序返回不正确的值

mysql - Django 代码或 MySQL 触发器

C# MySQL 中的连接太多

mysql - 我正在尝试在一个查询中从两个不同的表中选择数据

mysql - 通过触发器使用前一行和当前行的数据将总和插入到数据库的列中

wpf - 为什么当值为 false 时 `IsKeyboardFocusWithin` 上的触发器不起作用?

postgresql - PLPGSQL 函数返回触发器和值

javascript - 触发器仅在单击时起作用,但在没有它的情况下加载时不起作用

mysql - 两个 LEFT JOIN 表的联合表不起作用

mysql - 计算条件为 true 的总行数的百分比