代码改变世界

MSSQL中实现多表更新

2011-04-09 12:42  何朝阳  阅读(603)  评论(0编辑  收藏  举报

续2010年11月09日的《SQL语句中CASE WHEN以及CAST的运用》一文,如果在基础数据教师表中添加了新的教师用户,而恰好添加的教师已经存在于教学成果数据中,则需要更新教学成果数据中该教师的信息,即:之前存储的是教师的姓名,添加教师后,则应该存储教师的编号。于是需要定期检查是否有新添加的教师信息,需要跨表更新教学成果数据。

以下是实现方法:

	UPDATE	Web_TeacherIDList
	SET	TeacherID = BaseInfo_Teacher.TeacherID
	FROM Web_TeacherIDList INNER JOIN
		BaseInfo_Teacher ON Web_TeacherIDList.TeacherID = BaseInfo_Teacher.TeacherName

还可以通过RETURN @@ROWCOUNT获得更新的数据条数,以下是存储过程:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author:		何朝阳
-- Create date: 2011年4月9日10:59:27
-- Description:	更新教师列表
-- =============================================
CREATE PROCEDURE [dbo].[UP_TIMS_Web_Update_TeacherIDList]
AS
BEGIN
	UPDATE	Web_TeacherIDList
	SET	TeacherID = BaseInfo_Teacher.TeacherID
	FROM Web_TeacherIDList INNER JOIN
		BaseInfo_Teacher ON Web_TeacherIDList.TeacherID = BaseInfo_Teacher.TeacherName
	RETURN @@ROWCOUNT
END