我必须为一名学生复制数据(克隆学生) 这包括三个表:
- tblStudent(其中PK是studentId)
- tblStudentSubjects(其中PK是StudentsubjectId,FK是StudentId)
- tblStudentSubjectComments(其中PK不存在且FK是 StudentSubjectId)
醇>
要做到这一点,我必须
- 通过复制现有学生记录创建学生记录并获取新记录 studentid
- 使用创建每个现有学生科目的学生科目记录 新的学生和获得新的 StudentSubjectId
- 为每位现有学生创建学生主题评论记录 主题评论使用新的 studentSubjectId
醇>
...希望你有所了解
那么,有一种优雅的方法可以在一个商店程序中使用CTE来实现这一目的吗? (我正在使用SQL Server 2005)
答案 0 :(得分:2)
INSERT和UPDATE语句一次只能在一个表上运行。您有3个表需要INSERT。你绝对可以一次性将多行插入到表中,我认为尽可能做好,但你不能同时在多个表中放行。
这样想。查询数据时,您将从多个源中将记录拉入单个结果集。修改数据时,您将从多个源中提取记录以将更改应用于单个结果集。
另外,我讨厌说,但有一些事情不需要超级优雅的解决方案。您的存储过程只需要应用一些最佳实践来确保所有3个INSERT语句都作为原子事务(全部或全部)发生。最终结果可能是冗长和无趣的,但它将是快速,有效,安全,易懂和可维护的。
答案 1 :(得分:0)
您是否尝试过使用OUTPUT INTO将初始操作的结果导入另一个表并重复?