假设我有两个表格,A和B,每个表格有三列(A.id,A.title,A.text和B.id,B.a_id,B.text)。 B.a_id是与A.id有关的外键。现在,假设A(1,'foo','bar')中有一条记录,B中有2条记录(1,1,'test')和(2,1,'test1')。
我的问题是,是否有一种标准方法复制A中的记录,同时复制B中与A相关的所有记录。所以假设我在A中创建一个新记录(2,'foo) ','bar')基于(1,'foo','bar'),是否有某种方法可以在B中创建两个新记录(3,2,'test')和(4,2,'' TEST1)?
我之前从未使用过触发器,这是开始这样做的正确时刻吗?或者这是一个非常愚蠢的问题?
答案 0 :(得分:4)
这不是一个愚蠢的问题。但是,我认为这对纯SQL来说是不可能的,或者只有一些我不知道的异国语法。复制行不是问题(假设id是auto_increment):
insert into A (title, text) select title, text from A where id = XY
然而,你需要找到最后一个插入ID来复制B中的记录。让我们看看:
insert into B (a_id, text) select LAST_INSERT_ID(), text from B where a_id = XY
嗯...也许这样可行,但我对LAST_INSERT_ID()有点怀疑。无论如何,我认为只用一个陈述就不能做到。
让我知道它是怎么回事
汤姆