Php 使用左连接将MySql插入到2个不同的表中

Php 使用左连接将MySql插入到2个不同的表中,php,mysql,foreign-keys,relational-database,left-join,Php,Mysql,Foreign Keys,Relational Database,Left Join,当在表B中为匹配记录创建新记录时,我尝试更新表A中的timestamp列。它是一个记录链接的关系数据库。在表B中创建新记录时,它会引用表a中已建立的记录。如果不链接到a中的记录,则无法在B中创建新记录 表A:id、名称、日期、地址、时间戳 表B:id、a_id、代理、注释 其中b.a_id=a.id 我已经通过这些论坛,似乎得到了相互矛盾的答案。我将使用什么样的sql查询来实现这一点?我需要使用某种类型的联接吗?这就是我所处的位置: INSERT INTO b ( a_id, agent, co

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

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

表B:id、a_id、代理、注释

其中b.a_id=a.id

我已经通过这些论坛,似乎得到了相互矛盾的答案。我将使用什么样的sql查询来实现这一点?我需要使用某种类型的联接吗?这就是我所处的位置:

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);

很难理解你想要完成什么。您是否正在尝试更新
a
中具有\u 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;

很难理解你想要完成什么。您是否正在尝试更新
a
中具有\u 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;

您不能使用
联接
在一个查询中更新多个表。如果我理解正确的话,你可以查看
触发器
,当然是@ramraidercan@cam308请看,您不是指一个查询,而是指一个更新命令。您不能在一个查询中使用
联接来更新多个表。如果我理解正确的话,你可以查看
触发器
,当然是@ramraidercan@cam308看,你不是指一个查询,你是指一个更新命令。是的,没错!在B中创建一个新记录,同时更新a中与该id对应的时间戳。完美!谢谢你是的,没错!在B中创建一个新记录,同时更新a中与该id对应的时间戳。完美!非常感谢。