【问题标题】:MySql Insert Into 2 Different Tables Using Left JoinMySql 使用左连接插入 2 个不同的表
【发布时间】:2017-06-29 21:47:01
【问题描述】:

当在表 B 中为匹配记录创建新记录时,我正在尝试更新表 A 中的时间戳列。它是一个记录链接的关系数据库。在表 B 中创建新记录时,它会引用表 A 中已建立的记录。如果不链接到 A 中的记录,则无法在 B 中创建新记录。

表 A:id、姓名、日期、地址、时间戳

表 B:id、a_id、代理、评论

在哪里 b.a_id = a.id

我浏览过这些论坛,似乎得到了相互矛盾的答案。我将使用什么 sql 查询来完成这项工作?我需要使用某种类型的 JOIN 吗?这是我所在的位置:

INSERT INTO b ( a_id, agent, comment)
     VALUES ( 1008, 'TEST', 'Hello world!');
INSERT INTO a (timestamp)
     VALUES ((SELECT id FROM b WHERE b.a_id = a.id), current_timestamp);

【问题讨论】:

标签: php mysql foreign-keys relational-database left-join


【解决方案1】:

很难理解你想要完成什么。您是否尝试更新 a 中具有 a_id 1008 的行中的时间戳?

INSERT INTO b (a_id, agent, comment)
     VALUES (1008, 'TEST', 'Hello world!');

UPDATE a SET timestamp = CURRENT_TIMESTAMP WHERE id = 1008;

我会完全按照上面的说明进行操作。插入b,然后更新a

如果你想让它自动发生,你可以使用触发器:

CREATE TRIGGER b_ins AFTER INSERT ON b
FOR EACH ROW
  UPDATE a SET timestamp = CURRENT_TIMESTAMP WHERE id = NEW.a_id;

【讨论】:

  • 是的,完全正确!在 B 中创建一条新记录,同时更新 A 中与该 id 对应的时间戳。
  • 完美!谢谢
猜你喜欢
  • 1970-01-01
  • 2011-06-30
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多