Sql server 是否在一个SP内使用CTE复制相关数据?

Sql server 是否在一个SP内使用CTE复制相关数据?,sql-server,Sql Server,我必须为一名学生(克隆学生)复制数据 其中包括三个表格: TBL学生(其中PK为学生ID) TBL学生科目(其中PK为学生科目,FK为学生科目) tblStudentSubjectComments(其中PK不存在,FK为 学生(主观性) 要做到这一点,我必须 通过处理现有学生记录创建学生记录并获取新的 学生 使用创建每个现有学生科目的学生科目记录 新学生,获得新知识 学生主体 为每个现有学生创建学生主题评论记录 使用新的主题注释 学生主体 。。。希望你有主意 那么,在一个存储过程中使用CTE是否

我必须为一名学生(克隆学生)复制数据 其中包括三个表格:

  • TBL学生(其中PK为学生ID)
  • TBL学生科目(其中PK为学生科目,FK为学生科目)
  • tblStudentSubjectComments(其中PK不存在,FK为 学生(主观性)
  • 要做到这一点,我必须

  • 通过处理现有学生记录创建学生记录并获取新的 学生
  • 使用创建每个现有学生科目的学生科目记录 新学生,获得新知识 学生主体
  • 为每个现有学生创建学生主题评论记录 使用新的主题注释 学生主体
  • 。。。希望你有主意


    那么,在一个存储过程中使用CTE是否有一种优雅的方法来实现这一点?(我正在使用SQL Server 2005)

    您是否尝试使用将初始操作的结果获取到另一个表中并重复?

    INSERT和UPDATE语句一次仅对单个表进行操作。您有3个表需要插入。您可以在一次操作中向表中插入多行,我认为只要有可能就可以这样做,但不能同时将行放入多个表中

    这样想吧。当您查询数据时,您正在将来自多个源的记录拉入单个结果集中。修改数据时,您正在从多个源中提取记录,以将更改应用于单个结果集


    另外,我也不想这么说,但有些事情并不需要一个非常优雅的解决方案。您的存储过程只需要应用一些最佳实践,以确保所有3条INSERT语句都作为一个原子事务发生(要么全部发生,要么什么也不发生)。最终结果可能冗长乏味,但它将是快速、有效、安全、可理解和可维护的。

    主键的数据类型是什么?它们是标识列吗?是的,它们是前两个表的标识列。我担心我会听到这样的消息:-)