SQL SERVER2000 触发器语句

roader2046 2008-10-27 06:36:20
请教一条触发器语句怎么写:
表A(xuehao,examtime,examband,score),其中(xuehao,examtime,examband)为主键
表B(xuehao,name,age,passband),其中xuehao为主键
现在要求是在表A中插入数据,当A中的examband=0且score>425的时候更新表B中的passband为0,当A中的examband=1且score>425的时候更新表B中的passband为1,其他不变化
请各位帮忙,谢谢~
...全文
140 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小瑞 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 roader2046 的回复:]
引用 6 楼 Leedsema 的回复:
其中(xuehao,examtime,examband)为主键;


不知道,你是来自第几世界的.一个表有三个主键,PK么?怎么建立的?

额,我火星了?(xuehao,examtime,examband)这样不可以吗?主键只能是一个字段?没看见我用括号吗?联合主键可以吗?
[/Quote]


呵呵,都可以吧
roader2046 2008-10-28
  • 打赏
  • 举报
回复
问题解决了,用3楼的方法,将exists改成in然后用xuehao判断下就可以,谢谢大家!
roader2046 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Leedsema 的回复:]
其中(xuehao,examtime,examband)为主键;


不知道,你是来自第几世界的.一个表有三个主键,PK么?怎么建立的?
[/Quote]
额,我火星了?(xuehao,examtime,examband)这样不可以吗?主键只能是一个字段?没看见我用括号吗?联合主键可以吗?
zperson 2008-10-28
  • 打赏
  • 举报
回复
create trigger tri on A for insert
as
begin
update B
set passband=i.examband
from inserted i
where B.xuehao=i.xuehao and i.score>425
end
「已注销」 2008-10-28
  • 打赏
  • 举报
回复
其中(xuehao,examtime,examband)为主键;


不知道,你是来自第几世界的.一个表有三个主键,PK么?怎么建立的?
等不到来世 2008-10-27
  • 打赏
  • 举报
回复
create trigger tri on A for insert
as
begin
update B
set passband=i.examband
from inserted i
where B.xuehao=i.xuehao and i.score>425
end
go
roader2046 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 josy 的回复:]
引用楼主 roader2046 的帖子:
当A中的examband=0且score>425的时候更新表B中的passband为0,当A中的examband=1且score>425的时候更新表B中的passband为1,其他不变化
请各位帮忙,谢谢~

是指新插入的那条记录吗?

SQL code--在表A中插入数据,当A中的examband=0且score>425的时候更新表B中的passband为0,当A中的examband=1且score>425的时候更新表B中的passband为1--当上面2个条件都不满足的时候将B表的passband更新为-…
[/Quote]
感谢您的回复,我试了下,很不错,不过有个问题,当在A表插入一条新数据的时候(假设这条数据的结果是把passband=1)把B表的所有数据的passband列都更新成了1,我想应该要跟插入A的这条数据的xuehao字段联系起来,能请您再看下吗?
百年树人 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 roader2046 的帖子:]
当A中的examband=0且score>425的时候更新表B中的passband为0,当A中的examband=1且score>425的时候更新表B中的passband为1,其他不变化
请各位帮忙,谢谢~
[/Quote]
是指新插入的那条记录吗?

--在表A中插入数据,当A中的examband=0且score>425的时候更新表B中的passband为0,当A中的examband=1且score>425的时候更新表B中的passband为1
--当上面2个条件都不满足的时候将B表的passband更新为-1

IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'trA' AND type = 'TR')
DROP TRIGGER trA;
GO
Create Trigger trA
On A
for Insert
As
begin
update B set passband=0 where exists(select * from Inserted where examband=0 and score>425);
update B set passband=1 where exists(select * from Inserted where examband=1 and score>425);
update B set passband=-1 where not exists(select * from Inserted where examband in(0,1) and score>425);
end
roader2046 2008-10-27
  • 打赏
  • 举报
回复
额,再补充下触发器那个功能,当上面2个条件都不满足的时候将B表的passband更新为-1,谢谢了!~
roader2046 2008-10-27
  • 打赏
  • 举报
回复
忘了个问题,为什么我的mssql在连上网之后查询就比较快,而不上网的时候就感觉比较慢,我是单机调试用,没有几条数据
内容概要:本文提出了一种基于“空调-电动汽车”联合虚拟储能的海岛微电网优化调度方法,旨在解决海岛地区可再生能源消纳难与电力供应不稳定的问题。通过充分利用空调负荷的热惰性与电动汽车的灵活充放电能力,构建联合虚拟储能系统,等效替代物理储能装置,实现对风电、光伏等间歇性电源出力波动的平抑。研究建立了融合需求响应机制与多时间尺度调度框架的优化模型,并采用Matlab进行仿真验证。结果表明,该策略能够有效提升微电网对分布式能源的接纳能力,降低系统综合运行成本,增强供电可靠性与能源利用效率。; 适合人群:具备一定电力系统分析、优化建模及Matlab编程基础,从事微电网、综合能源系统、虚拟储能、需求响应等领域研究的科研人员与工程技术人员,特别适合研究生及以上学历的研究者。; 使用场景及目标:①应用于海岛、偏远孤岛等孤立微电网场景,提升可再生能源渗透率与系统韧性;②为高比例新能源接入的配电网提供低成本、高灵活性的虚拟储能解决方案;③实现空调与电动汽车等柔性负荷的协同优化,达成削峰填谷、降低能耗与运行成本的目标; 阅读建议:建议结合Matlab代码深入理解模型构建与求解过程,重点关注虚拟储能建模逻辑、温控负荷动态特性刻画、电动汽车充放电约束处理以及多时间尺度滚动优化的实现机制,可进一步拓展至碳交易、绿证激励等复合政策情景下的优化调度研究。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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