我被赋予创建存储过程以复制与数据库中给定ID关联的每一条数据的任务。这些数据跨越数十个表格。每个表可能有几十个匹配的行。SQL按照PK FK关系从多个表中递归复制行
例如:
表帐户
PK =帐户ID
表AccountSettings
FK =帐户ID
表用户
PK =用户名
FK =帐户ID
表UserContent
PK = UserContentID
FK =用户名
我想创建与一个帐户ID(这将穿越几乎所有表)副本将有一个新的帐户ID和UserContentID但具有相同的用户ID相关联的所有内容的副本。新数据需要在各自的表格中。 :)好玩吗?
以上只是一个示例,但我会为50或60表做类似的工作。 我已经使用CTE进行了研究,但对它们仍然有点模糊。这可能被证明是最好的方法。我的SQL技能是......好吧,我已经使用它约40个记录小时到目前为止:)
任何意见或方向在哪里看,将不胜感激。另外,如果可能或者更好,我不会反对通过C#来做到这一点。
在此先感谢您的任何帮助信息。
在您的示例中,1帐户可以有0-n个用户,但** 1个用户只能有0-1个帐户** =>第二个帐户将不可能具有相同的用户ID(如果您当然不想删除用户连接到第一个帐户) – Aprillion 2012-03-09 22:55:47
哇。我不会这样做。 CTE只会递减100次,所以你可以超过这个。为什么不直接添加基于临时表中的表的外键的临时表,直到不添加新行? – saarp 2012-03-11 10:27:02
@saarp:为什么CTE只会缓冲100次?这是一个荒谬的假设。 – 2012-09-07 22:51:13