求一个简单的触发器

pgdoryoku 2008-01-19 03:26:56
平台:mssql2000
条件:1、已知有两表,表A和表B
2、表A中有字段,A1,A2
3、表B中有字段,B1,B2
问题:当更新表A中的A2字段的同时,更新表B中所有B2字段中的B2=A2的所有字段为新的A2。
要求:要有该触发器要有容错功能,且在建立之前会判断是否有同名触发器存在,有的话则删除同名的触发器在建立触发器。
...全文
67 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun9moon 2008-01-20
  • 打赏
  • 举报
回复
create table a(a1 int,a2 int)
insert into a select 1,1
insert into a select 2,2

create table b(b1 char(1),b2 int)
insert into b select 'a',1
insert into b select 'b',1
insert into b select 'c',2
insert into b select 'd',2
insert into b select 'e',2
go
if exists(select 1 from sysobjects where name ='ut_a_update' and type='tr')
drop trigger ut_a_update
go
create trigger ut_a_update on a for update
as
update b set b2=i.a2
from inserted i join deleted d on i.a1=d.A1
join b on b.b2=d.a2
go
--测试
select * from b
update a set a2=3 where a2=1
select * from b

drop table a
drop table b
go
中国风 2008-01-19
  • 打赏
  • 举报
回复
inserted i join deleted d on i.A1=D.A1
这句什么意思?

inserted --别名为i表
deleted --别名为d表
中国风 2008-01-19
  • 打赏
  • 举报
回复
deleted 和 inserted 是逻辑(概念)表

--一个是更新前,一个是更新后状态
pgdoryoku 2008-01-19
  • 打赏
  • 举报
回复
谢谢,在问下2楼的语句中
inserted i join deleted d on i.A1=D.A1
这句什么意思?
wzy_love_sly 2008-01-19
  • 打赏
  • 举报
回复
create table a(a1 int,a2 int)
insert into a select 1,1
insert into a select 2,2


create table b(b1 int,b2 int)
insert into b select 1,1
insert into b select 2,1
insert into b select 3,2
insert into b select 4,2
insert into b select 5,2

create trigger tr_a
on a
for update
as
begin
update a set b2=b.a2 from b a,deleted c,inserted b
where a.b2=c.a2 and c.a1=b.a1
end

update a set a2=5 where a1=1

select * from a

select * from b

--a
a1 a2
1 5
2 2
--b
b1 b2
1 5
2 5
3 2
4 2
5 2


中国风 2008-01-19
  • 打赏
  • 举报
回复
如果是唯一的情况下建级联更新A的A2上
中国风 2008-01-19
  • 打赏
  • 举报
回复
create trigger tr_A on A
for update
as
update B
set B2=i.A2
from
inserted i join deleted d on i.A1=D.A1
join B on B2=d.A2
dawugui 2008-01-19
  • 打赏
  • 举报
回复
create trigger my_trig on A for update
as
update b set b2 = a.a2 from b,a where b.b1 = a.a1
SQL查询相关技术,源码大放送! 10.1 SELECT子句 426   实例292 查询特定列数据 426   实例293 使用列别名 428   实例294 在列上加入计算 430 EX10_03   实例295 使用函数设置条件 431   10.2 查询常量 432   实例296 查询数字 433   实例297 查询字符串 434   实例298 查询日期数据 436   实例299 查询逻辑型数据 437   实例300 查询空数据 438   10.3 查询变量 440   实例301 利用变量查询字符串数据 440   实例302 利用变量查询数值型数据 441   实例303 利用变量查询日期型数据 442   10.4 模式查询 444   实例304 利用“_”通配符进行查询 444   实例305 利用“%”通配符进行查询 445   实例306 利用“[]”通配符进行查询 446   实例307 利用“[^]”通配符进行查询 448   实例308 复杂的模式查询 449   10.5 TOP和PERCENT限制查询结果 450   实例309 查询前10名数据 450   实例310 取出数据统计结果的前10名数据 451   实例311 查询销售量占前50%的图书信息 453   实例312 查询库存数量占后20%的图书信息 454   10.6 周期、日期查询 455   实例313 查询指定日期的数据 455   实例314 查询指定时间段的数据 457   实例315 按月查询数据 458   10.7 比较、逻辑、重复查询 460   实例316 查询数据大于指定条件的数据 460   实例317 NOT与谓词进行组合条件的查询 461   实例318 查询时不显示重复记录 463   实例319 列出数据中的重复记录和记录条数 465   10.8 在查询中使用OR和AND运算符 466   实例320 利用OR运算符进行查询 466   实例321 利用AND运算符进行查询 467   实例322 同时利用OR、AND运算符进行查询 469   10.9 排序、分组统计 471   实例323 数据分组统计(单列) 471   实例324 在分组查询中使用ALL关键字 473   实例325 在分组查询中使用CUBE运算符 475   实例326 在分组查询中使用ROLLUP 477   实例327 对数据进行降序查询 479   实例328 对数据进行多条件排序 480   实例329 对统计结果进行排序 482   实例330 按仓库分组统计图书库存(多列) 483   实例331 多表分组统计 484   实例332 使用COMPUTE 485   实例333 使用COMPUTE BY 487   10.10 聚合函数 488   实例334 利用聚合函数SUM对销售额进行汇总 488   实例335 利用聚合函数AVG某班学生的平均年龄 490   实例336 利用聚合函数MIN销售额、利润最少的商品 492   实例337 利用聚合函数MAX月销售额完成最多的员工 493   实例338 利用聚合函数COUNT日销售额大于某值的商品数 495   实例339 利用聚合函数First或Last数据表中第一条或最后一条记录 496   10.11 多表查询(连接查询) 498   实例340 利用FROM子句进行多表查询 498   实例341 使用表别名 499   实例342 合并多个结果集 501   10.12 嵌套查询 503   实例343 简单嵌套查询 503   实例344 复杂嵌套查询 504   实例345 嵌套查询在查询统计中的应用 506   10.13 子查询 508   实例346 用子查询做派生的表 508   实例347 用子查询作表达式 510   实例348 在Update语句中应用子查询 511   10.14 联合语句Union 512   实例349 使用联合查询 512   实例350 多表联合查询 514   实例351 对联合查询后的结果进行排序 515   10.15 内联接查询 517   实例352 简单内联接查询 517   实例353 复杂内联接查询 518   实例354 使用内联接选择一个表与另一个表中行相关的所有行 519   10.16 外联接查询 520   实例355 left outer join查询 521   实例356 right outer join查询 522   实例357 使用外联接进行多表联合查询 523   10.17 利用IN进行查询 525   实例358 用IN查询表中的记录信息 525   实例359 使用IN引入子查询限定查询范围 526   10.18 交叉表查询 527   实例360 利用Trasform分析数据 527   实例361 利用Trasform动态分析数据 529   实例362 静态交叉表(SQLServer 2000) 531   实例363 动态交叉表(SQLServer 2000) 533   10.19 函数查询 535   实例364 在查询语句中使用格式化函数 536   实例365 在查询语句中使用字符串函数 537   实例366 在查询中使用日期函数 538   10.20 having语句应用 540   实例367 利用having语句过滤分组数据 540   实例368 having语句应用在多表查询中 541   10.21 视图的应用 543   实例369 在C#中应用视图 543   实例370 获取数据库中的全部用户视图 544   实例371 通过视图修改数据 545   10.22 存储过程的应用 546   实例372 C#应用存储过程 546   实例373 应用存储过程添加数据 547   实例374 应用存储过程修改数据 549   实例375 应用存储过程删除数据 550   实例376 C#应用查询存储过程 551   实例377 获取数据库中全部的存储过程 552   实例378 加密存储过程 553   10.23 触发器的应用 555   实例379 Insert触发器的应用 555   实例380 Update触发器在系统日志中的应用 556   实例381 触发器的嵌套使用 557   实例382 获取数据库中的触发器 559
"单片机使用实习任务书 " "学生姓名 " "系部" "专业 " " " " " " "班级 " " "指导教师姓名" "职称" "是否外聘" " "题目名称 " " "设计的内容、意义及技术指标要 " "1、设计内容及意义 " "随着科学技术的快速发展,超声波将在测距仪中的使用越来越广。但就目前技术" "水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃" "发展而又有无限前景的技术及产业领域。。超声波测距就是利用其反射特性,超" "声波发生器不断地发射出40kHz超声波遇到障碍物后反射回反射波,超声波接收 " "器接收到发射波信号,并将其转换为电信号。相比于其它定位技术超声波定位技" "术成本低,制作容易,非常适合于短距离测量定位。因此,设计好的超声波测距" "仪就显得非常重要了。这就是我设计超声波测距仪的意义。 " "2、技术指标要 " "以单片机发射40khz的方波及数码管显示距离 " "以CX20106A接收信号 " "摘 要 " "本设计采用以STC89C52单片机为核心的低成本、高精度、微型化数字显示超声波" "测距仪的硬件电路和软件设计方法。整个电路由主程序、预置子程序、发射子程" "序、接收子程序、显示子程序等模块组成。各探头的信号经单片机综合分析处理" ",实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过" "硬件和软件实现了各个功能模块。 " "关键词:STC89C52; 超声波;测距 " 第1章 总体设计方案 1.1 总体设计方案 方案一 基于单片机的超声波测距系统,是利用单片机编程产生频率为 40kHz 的方波 , 经过发射驱动电路放大,使超声波传感器发射端震荡,发射超声波。超声波波经反射物 反射回来后,由传感器接收端接收,再经接收电路放大、整形,控制单片机中断口。其 系统框图如图 1.1 所示。 图1.1 这种以单片机为核心的超声波测距系统通过单片机记录超声波发射的时间 和收到反射波的时间 。 当收到超声波的反射波时 , 接收电路输出端产生一个负跳变 , 在单片机的外部中断源输入口产生一个中断请信号 , 单片机响应外部中断请,执行外部中断服务子程序,读取时间差,计算距离,结果输 出给 LED 显 示 利用单片机准确计时 , 测距精度高 , 而且单片机控制方便 , 计算简单 。 许多超声波测距系统都采用这种设计方法。 方案二 基于 CPLD 的超声波测距系统,这种测距系统采用 CPLD(Complex Programmable Logic Device) 器件,运用 VHDL(Very High Speed Integrated Circuit Hardware DescriptionLanguage) 编写程序,使用 MAX+plusII 软件进行软硬件设计的仿真和调试,最终实现测距功能。 CPLD 器件内部的宏单元是其最基本的模块,能独立地编程为 D 触发器 、 T触发器、RS 触发器或 JK 触发器工作方式或组合逻辑工作方式。它的这种特性非常适用于本系统,可将本系统所 需要的分频功能、计数功能、振荡器、七段码显示全部由 MAX 来实现,而只需在外部配上适当的超声波传感器、接收和发送电路,即可组成一个测量 精度高、性能稳定、响应速度快且具有显示功能的超声波测距仪。 本系统利用 CPLD 器件控制超声波的发射,并对超声波发射至接收的往返时间进行计数,将计算结果在 LED 上显示出来。配合使用 MAX+plusII 开发软件,可集设计输入、设计处理、设计校验和器件编程于一体,集成度高,开发周 期短 。 其系统框图如下图 所示。 图1.2 通过以上我们知道,以单片机为核心的超声波测距系统设计简单、方便 ,而且测精度能达到工业要。本设计测距系统就是用单片机控制的。通过超声波发射 器向某一方向发射超声波,单片机在发射时刻同时开始计时,超声波在空气中传播, 途中碰到障碍物就立即反射回来,超声波接收器收到反射波就立即停止计时。超声波在 空气中的传播速度为 v,根据计时器记录的时间 t,就可以计算出发射点距障碍物的距离。 本系统利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。接收 电路的输出端接单片机的外部中断源输入口。系统定时发射超声波 ,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波 发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个 负跳变,在单片机的外部中断源输入口产生一个中断请信号,单片机响应外部中断请 执行外部中断服务子程序,读取时间差,计算距离,结果输出给数码管显示。 1.2 软硬件功能分析 第2章 硬件电路设计 2.1 单片机最小系统电路设计 单片机最小系统是单片机能正常工作
第10章 SQL查询相关技术 425
10.1 SELECT子句 426
实例292 查询特定列数据 426
实例293 使用列别名 428
实例294 在列上加入计算 430
实例295 使用函数设置条件 431
10.2 查询常量 432
实例296 查询数字 433
实例297 查询字符串 434
实例298 查询日期数据 436
实例299 查询逻辑型数据 437
实例300 查询空数据 438
10.3 查询变量 440
实例301 利用变量查询字符串数据 440
实例302 利用变量查询数值型数据 441
实例303 利用变量查询日期型数据 442
10.4 模式查询 444
实例304 利用“_”通配符进行查询 444
实例305 利用“%”通配符进行查询 445
实例306 利用“[]”通配符进行查询 446
实例307 利用“[^]”通配符进行查询 448
实例308 复杂的模式查询 449
10.5 TOP和PERCENT限制查询结果 450
实例309 查询前10名数据 450
实例310 取出数据统计结果的前10名数据 451
实例311 查询销售量占前50%的图书信息 453
实例312 查询库存数量占后20%的图书信息 454
10.6 周期、日期查询 455
实例313 查询指定日期的数据 455
实例314 查询指定时间段的数据 457
实例315 按月查询数据 458
10.7 比较、逻辑、重复查询 460
实例316 查询数据大于指定条件的数据 460
实例317 NOT与谓词进行组合条件的查询 461
实例318 查询时不显示重复记录 463
实例319 列出数据中的重复记录和记录条数 465
10.8 在查询中使用OR和AND运算符 466
实例320 利用OR运算符进行查询 466
实例321 利用AND运算符进行查询 467
实例322 同时利用OR、AND运算符进行查询 469
10.9 排序、分组统计 471
实例323 数据分组统计(单列) 471
实例324 在分组查询中使用ALL关键字 473
实例325 在分组查询中使用CUBE运算符 475
实例326 在分组查询中使用ROLLUP 477
实例327 对数据进行降序查询 479
实例328 对数据进行多条件排序 480
实例329 对统计结果进行排序 482
实例330 按仓库分组统计图书库存(多列) 483
实例331 多表分组统计 484
实例332 使用COMPUTE 485
实例333 使用COMPUTE BY 487
10.10 聚合函数 488
实例334 利用聚合函数SUM对销售额进行汇总 488
实例335 利用聚合函数AVG某班学生的平均年龄 490
实例336 利用聚合函数MIN销售额、利润最少的商品 492
实例337 利用聚合函数MAX月销售额完成最多的员工 493
实例338 利用聚合函数COUNT日销售额大于某值的商品数 495
实例339 利用聚合函数First或Last数据表中第一条或最后一条记录 496
10.11 多表查询(连接查询) 498
实例340 利用FROM子句进行多表查询 498
实例341 使用表别名 499
实例342 合并多个结果集 501
10.12 嵌套查询 503
实例343 简单嵌套查询 503
实例344 复杂嵌套查询 504
实例345 嵌套查询在查询统计中的应用 506
10.13 子查询 508
实例346 用子查询做派生的表 508
实例347 用子查询作表达式 510
实例348 在Update语句中应用子查询 511
10.14 联合语句Union 512
实例349 使用联合查询 512
实例350 多表联合查询 514
实例351 对联合查询后的结果进行排序 515
10.15 内联接查询 517
实例352 简单内联接查询 517
实例353 复杂内联接查询 518
实例354 使用内联接选择一个表与另一个表中行相关的所有行 519
10.16 外联接查询 520
实例355 left outer join查询 521
实例356 right outer join查询 522
实例357 使用外联接进行多表联合查询 523
10.17 利用IN进行查询 525
实例358 用IN查询表中的记录信息 525
实例359 使用IN引入子查询限定查询范围 526
10.18 交叉表查询 527
实例360 利用Trasform分析数据 527
实例361 利用Trasform动态分析数据 529
实例362 静态交叉表(SQLServer 2000) 531
实例363 动态交叉表(SQLServer 2000) 533
10.19 函数查询 535
实例364 在查询语句中使用格式化函数 536
实例365 在查询语句中使用字符串函数 537
实例366 在查询中使用日期函数 538
10.20 having语句应用 540
实例367 利用having语句过滤分组数据 540
实例368 having语句应用在多表查询中 541
10.21 视图的应用 543
实例369 在C#中应用视图 543
实例370 获取数据库中的全部用户视图 544
实例371 通过视图修改数据 545
10.22 存储过程的应用 546
实例372 C#应用存储过程 546
实例373 应用存储过程添加数据 547
实例374 应用存储过程修改数据 549
实例375 应用存储过程删除数据 550
实例376 C#应用查询存储过程 551
实例377 获取数据库中全部的存储过程 552
实例378 加密存储过程 553
10.23 触发器的应用 555
实例379 Insert触发器的应用 555
实例380 Update触发器在系统日志中的应用 556
实例381 触发器的嵌套使用 557
实例382 获取数据库中的触发器 559

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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