SQL 关于多条update

wdxgdiy 2009-10-10 02:07:38
例如有2个表 一个是员工信息表 表里有名字 工资等字段 一个是公司财务表有 每月总支出等字段

现在要给一个员工涨工资 500RMB 就要写2条 UPDATE语句(假设只有两张表。实际肯定要更多)

问:如何将2条 UPDATE语句合并 提高效率(就例如Insert 语句那样有个方法能批量插入生的写好多条SQL语句)

总结:也就是说如何让多条UPDATE语句合并成一条 或者其他的方法 只让数据库执行一次 便可得到所有表的更新
...全文
133 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hide1984 2009-10-10
  • 打赏
  • 举报
回复

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
go
alter PROCEDURE UpdateEmployeeSalary
@EmployeeID int,
@UpdateSalaryNumber DECIMAL(18,2) = 0
AS
BEGIN
UPDATE dbo.EmployeeSalary SET Salary = @UpdateSalaryNumber WHERE EmployeeID = @EmployeeID
UPDATE dbo.PayOut SET PayOut = @UpdateSalaryNumber WHERE EmployeeID = @EmployeeID
SET NOCOUNT ON;
END
GO


两张表EmployeeSalary 和PayOut
既可以用存储过程来做,也可以触发器做。不过我个人觉得触发器不是非常适合这个场景。
wdxgdiy 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql77 的回复:]
引用 3 楼 bancxc 的回复:
可以吗 一个update多个表???

不行吧
[/Quote]
我也不知道可以么。所以才问下的
wdxgdiy 2009-10-10
  • 打赏
  • 举报
回复
大家说说咋写给个例子啊。小弟存储过程不太熟啊。谢啦
SQL77 2009-10-10
  • 打赏
  • 举报
回复
多条UPDATE还是写在存储过程里,不过你的那个应该用触发器实现吧,增加500后,那个总支出也增加500是这样的意思吗
navy887 2009-10-10
  • 打赏
  • 举报
回复
一条UPDATE更新几张表是不可能的
不过你的的情况可以把几条UPDATE写到一个事务里
sdhdy 2009-10-10
  • 打赏
  • 举报
回复
用存储过程好一些,当然要写多条UPDATE语句,一条UPDATE语句只能更新一个表。
SQL77 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bancxc 的回复:]
可以吗 一个update多个表???
[/Quote]
不行吧
sgtzzc 2009-10-10
  • 打赏
  • 举报
回复
如果涨个工资都要更新多次,说明你的表结构设计得不合理
产生了更新异常
SQL77 2009-10-10
  • 打赏
  • 举报
回复
那个不是应该用触发器来实现的吗?
bancxc 2009-10-10
  • 打赏
  • 举报
回复
可以吗 一个update多个表???
--小F-- 2009-10-10
  • 打赏
  • 举报
回复
多条UPDATE语句可以用一个存储过程来完成 可以提高效率
guguda2008 2009-10-10
  • 打赏
  • 举报
回复
把UPDATE改成存储过程就行了

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧