Mysql 复制具有关系的数据库记录

Mysql 复制具有关系的数据库记录,mysql,symfony1,doctrine,Mysql,Symfony1,Doctrine,我在同一个数据库中有两组表——一个活动集和一个测试集。每个集合中有两个表-表A和表B-它们之间有一对多的关系 我需要做的是从测试集中的表A中选择某些记录,并将这些记录及其在表B中的关系全部复制到活动表集中。这些集合的结构是相同的 是否可以在不必手动分解记录的情况下执行此操作 我在symfony1.4php框架的上下文中使用了ORM原则(我认为是1.2) 到目前为止,我一直在尝试这样的事情: $record = Doctrine_Core::getTable('testSetTableA')-&g

我在同一个数据库中有两组表——一个活动集和一个测试集。每个集合中有两个表-表A和表B-它们之间有一对多的关系

我需要做的是从测试集中的表A中选择某些记录,并将这些记录及其在表B中的关系全部复制到活动表集中。这些集合的结构是相同的

是否可以在不必手动分解记录的情况下执行此操作

我在symfony1.4php框架的上下文中使用了ORM原则(我认为是1.2)

到目前为止,我一直在尝试这样的事情:

$record = Doctrine_Core::getTable('testSetTableA')->find(1);
$liveSetTableArecord = new LiveSetTableArecord();
$liveSetTableArecord = $record->copy();
$liveSetTableArecord->save();

但我觉得我错过了一些基本的东西。据我所知,没有任何方法可以从查询对象中完整地设置记录?

我对这个问题做了更多的研究,据我所知,使用ORM进行这种类型的操作首先是一个坏主意,因为涉及到所有不必要的开销

仅仅使用一个原始的“INSERT-INTO”语句就要高效得多,这正是我现在所做的

    $connection = Doctrine_Manager::connection();
    $query = "INSERT INTO Set2tableA SELECT * FROM Set1tableA WHERE id = '$id' ON DUPLICATE KEY UPDATE Set2tableA.id = Set2tableA.id";
    $statement = $connection->execute($query);
    $statement->execute();

    $query2 = "INSERT INTO Set2TableB SELECT * FROM Set1TableB WHERE tableA_id = '$id' ON DUPLICATE KEY UPDATE Set2TableB.id = Set1TableB.id";
    $statement = $connection->execute($query2);
    $statement->execute();

“在重复密钥更新时”是必需的,因为表B中的主键是非空的,因此当您尝试将记录1从表A复制到表B中时,mysql发现已经有一个ID=1的条目并抛出错误。

这是一个常规操作还是一个计时器?您可以将您的解决方案作为答案发布,并在您认为正确的情况下接受它这是解决这个问题的好办法。