第一篇:7实验七 触发器
实验七
触发器
一、实验目的
(1)理解触发器的用途、类型和工作原理
(2)掌握利用T-SQL语句创建和维护触发器的方法(3)掌握利用企业管理器创建、维护触发器的方法
二、实验内容
1.创建after触发器
(1)创建一个在插入时触发的触发器sc_insert,当向sc表插入数据时,须确保插入的学号已在Student表中存在,并且还须确保插入的课程号在Course表中存在;若不存在,则给出相应的提示信息,并取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课程号不满足条件(注:Student表与sc表的外键约束要先取消)。
create trigger sc_insert on sc after insert as if not exists(select * from student,inserted
where student.sno=inserted.sno)begin print '插入信息的学号不在学生表中!' if not exists(select * from course,inserted where
print '插入信息的课程号不在课程表中!' rollback course.cno=inserted.cno)end else
begin
if not exists(select * from course,inserted where begin print '插入信息的课程号不在课程表中!' rollback course.cno=inserted.cno)end end
执行:
①、insert into SC values('20110112','001','78')
删除外键约束:
alter table SC drop constraint FK__SC__Sno__182C9B23
②、insert into SC values('20110002','001','78')
③、insert into SC values('20110002','006','78')
(2)为Course表创建一个触发器Course_del,当删除了Course表中的一条课程信息时,同时将表sc表中相应的学生选课记录删除掉。
create trigger course_del on course after delete as
if exists(select * from sc,deleted
where sc.cno=deleted.cno)begin
delete from sc where sc.cno in(select cno from deleted)end
delete from Course where Cno='003'
select * from SC
(3)在Course表中添加一个平均成绩avg_Grade字段(记录每门课程的平均成绩),创建一个触发器Grade_modify,当SC表中的某学生的成绩发生变化时,则Course表中的平均成绩也能及时相应的发生改变。alter table Course add avg_Grade smallint
update Course set avg_Grade=(select AVG(Grade)from SC
where SC.Cno=Course.Cno)
select * from Course
create trigger Grade_modify on sc after update as if update(grade)begin update course
set avg_grade=(select avg(grade)
from sc where course.cno=sc.cno
group by cno)end
update SC set Grade='90' where Sno='20050001' and Cno='001'
(4)测试上述三个触发器。测试过程在(1)、(2)、(3)中均给出
2.创建instead of 触发器
(1)创建一视图Student_view,包含学号、姓名、课程号、课程名、成绩等属性,在Student_view上创建一个触发器Grade_moidfy,当对Student_view中的学生的成绩进行修改时,实际修改的是sc中的相应记录。
create view Student_view as select s.Sno,Sname,c.Cno,Cname,Grade from Student s,Course c,SC where s.Sno=SC.Sno and c.Cno=SC.Cno
select * from Student_view
create trigger Grade_moidfy on Student_view instead of update as if UPDATE(Grade)begin update SC
set Grade=(select Grade from inserted)where Sno=(select Sno from inserted)and Cno=(select Cno from inserted)end
update Student_view set Grade=40 where Sno='20110001' and Cno='002'
select * from Student_view
select * from SC
(2)在SC表中插入一个getcredit字段(记录某学生,所选课程所获学分的情况),创建一个触发器ins_credit,当更改(注:含插入时)SC表中的学生成绩时,如果新成绩大于等于60分,则该生可获得这门课的学分,且该学分须与Course表中的值一致;如果新成绩小于60分,则该生未能获得学分,修改值为0。
alter table SC add getcredit smallint
select * from SC
update SC set getcredit=(select credit from Course where SC.Cno=Course.Cno)where Grade>=60
update SC set getcredit=0 where Grade<60
create trigger ins_credit on SC instead of update,insert as begin
declare @s_no char(8),@c_no char(3),@new_grade smallint,@cred select @s_no=sno,@c_no=cno,@new_grade=grade from inserted select @cred=credit from course where cno=@c_no if(@new_grade>=60)
begin delete from SC where sno=@s_no and cno=@c_no insert into SC values(@s_no,@c_no,@new_grade,@cred)smallint end else begin delete from SC where sno=@s_no and cno=@c_no insert into SC values(@s_no,@c_no,@new_grade,0)end end
insert into SC(sno,cno,grade)values('20081800','002',85)
(3)测试上述两个触发器。测试结果在(1)、(2)中均已给出 3.使用T-SQL语句管理和维护
(1)用系统存储过程sp_helptrigger查看触发器Grade_modify的相关信息 sp_helptrigger Student_view
(2)使用系统存储过程sp_helptext查看触发器Grade_modify中的定义内容。sp_helptext Grade_moidfy
(3)使用select语句查看触发器Grade_modify的定义内容。
select o.id,c.text from sysobjects o inner join syscomments c on o.id=c.id where o.type='TR' and o.name='Grade_modify'
(4)用系统存储过程sp_depends查看触发器Grade_modify的相关性。sp_depends Grade_modify
(5)将sc_insert触发器改为instead of 触发器,实现的功能不变。drop trigger sc_insert
create trigger sc_insert on sc instead of insert as if not exists(select * from student,inserted
where student.sno=inserted.sno)begin print '插入信息的学号不在学生表中!' if not exists(select * from course,inserted where
print '插入信息的课程号不在课程表中!' rollback course.cno=inserted.cno)end else
begin
if not exists(select * from course,inserted where begin print '插入信息的课程号不在课程表中!' rollback course.cno=inserted.cno)end end
insert into SC values('20110005','001','78','6')
(6)将触发器sc_insert删除。drop trigger sc_insert
4.使用SQL Server Management Studio管理存储过程
(1)在SQL Server Management Studio中重新创建刚删除的触发器sc_insert 选中SC表,展开→右击“触发器”→新建触发器
出现如下界面:
编写余下的SQL语句:
CREATE TRIGGER sc_insert
ON SC
INSTEAD OF INSERT AS BEGIN
if not exists(select * from student,inserted
where student.sno=inserted.sno)begin print '插入信息的学号不在学生表中!' if not exists(select * from course,inserted where
print '插入信息的课程号不在课程表中!' rollback course.cno=inserted.cno)end else begin
if not exists(select * from course,inserted where begin print '插入信息的课程号不在课程表中!' rollback course.cno=inserted.cno)end end END
(2)查看触发器sc_insert 的内容。
展开表SC→触发器→选择sc_insert触发器→查看依赖关系
出现如下界面:
(3)删除触发器sc_insert 选中sc_insert触发器,右击→删除
第二篇:实验三、基本门电路及触发器 电子版实验报告
基本门电路及触发器实验
一、实验目的1.了解TTL门电路的原理、性能和使用方法;验证基本门电路逻辑功能。
2.验证D触发器;J-K触发器的逻辑功能。
二、实验内容
(一)验证以下门电路的逻辑关系
1.用与非门(00)实现与门逻辑关系:F=AB
2.异或门(86):
3.全加器(00、86):
(二)验证以下触发器逻辑关系
1.D触发器置位端、复位端的功能测试。
2.J-K触发器置位端、复位端的功能测试。
3.D、J-K触发器功能测试。
图3-1
JK触发器(74LS112)和D触发器(74LS74)
三、实验原理图
图3-2与门电路
图3-3异或门电路
图3-4
全加器电路
四、实验结果及数据处理
1.直接在实验原理图上标记芯片的引脚。
2.写出实验结果。
(1)与门、异或门实验结果表(用数字万用表测量高低电平1、0的电压值。)
输入
与门
异或门
A
B
F
Uo(V)
F
0
0
0
0.205
0
0
0
0.205
0
0
0.205
3.498
0
(2)全加器实验结果表
Ai
Bi
Ci
Si
Ci+1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
(4)D触发器的功能测试
输入端
输出原态
输出次态
D
Qn
Qn+1
0
*
*
0
*
*
0
0
0
0
0
0
0
(5)J-K触发器的功能测试
输入端
输出原态
输出次态
J
K
Qn
Qn+1
0
*
*
*
0
*
*
*
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
五、思考题
1.实验用的与非门和或门中不用的输入端如何处理?
答:与非门中不用的输入端应接高电平;或门中不用的输入端可以与有用的输入端接在一起或者接地。
2.如果与非门的一个输入端接时钟,其余输入端应是什么状态时才允许脉冲通过?
答:其余输入端均是高电平时才允许脉冲通过。
3.J-K触发器Qn=0时,如果时钟脉冲CP到来后,触发器处于“1”态,J-K两端应预先分别是什么状态?
答:J端预先是1,K端预先是0
或者J,K两端预先都是1
4.J-K触发器与D触发器的触发边沿有何不同?
答:J-K触发器是下降沿触发,D触发器是上升沿触发。
第三篇:微波实验七
实验七 微带缝隙天线仿真设计
姓名:李杰
学号:11081536
上课时间:周二下午
一.实验目的
1、了解微带缝隙天线的概念。
2、掌握MWO EM structure仿真方法。
3、掌握天线基本参数及优化设计方法。
二.实验要求
1.熟悉利用MWO软件进行EM仿真。2.熟悉微带天线基本特性。
3.了解WMO原理图引入 EM 结构方法。
4.利用MWO分析天线工作特性(反射,方向图等)。
三.实验原理
1、微带缝隙天线
这种天线由三层组成:上层为金属层(构成槽线、微带线的地),中间为介质基板,下层为金属层来构成微带导带。
微带天线的概念早在1953年就G.A.DeSchampS提出,在20世纪50年代和60年代只有一些零星的研究。直到20世纪70年代初期,当微带传输线的理论模型及对敷铜的介质基片的光刻技术发展之后,第一批具有许多设计结构的实用的微带天线才被制造出来。缝隙天线最早是在1946年H.G.Booker提出的,同微带天线一样最初没有引起太多的注意。缝隙天线可以借助同轴电缆很方便地馈送能量,也可用波导馈电来实现朝向大平片单侧的辐射,还可以在波导壁上切割出缝隙的阵列。缝隙开在导电平片上,称为平板缝隙天线;开在圆柱面上,称为开缝圆柱天线。开缝圆柱导体面是开缝导体片至开缝圆柱导体面的进化。波导缝隙阵天线由于其低损耗、高辐射效率和性能等一系列突出优点而得到广泛应用:而平板缝隙天线却因为损耗较大,功率容量低,效率不高,导致发展较为缓慢。到1972年,Y.Yoshimura明确提出微带馈电缝隙天线的概念。微带天线特点
具有以下优点:馈电网络和辐射单元相对分离,从而把馈线对天线辐射方向图的影
响降到最小,对制造公差要求比贴片天线低,可用标准的光刻技术在敷铜电路板上进行生产,在组阵时其单元间隔离可比贴片天线更大。特别是对于运动物体所用天线,微带缝隙天线可以说是理想的选择,因为它可以与物体的表面做得平齐,没有凸起部分,用于快速飞行器表面时不会带来附加的空气阻力,既隐蔽又不影响物体的运动。
四.实验内容及结果
用MWO创建一个电磁结构(EM structure)并仿真。它包含以下几个步骤: 1.创建 EM structure 2.建立 an enclosure 3.创建层
4.定义端口配置计算网格 5.观察电流密度和电场强度 6.观察smith圆图和方向图 7.执行频率扫描(AFS)8.将EM structure添加到原理图并仿真
Step1: 创建 EM structure
Step2: 设定 Enclosure
Step3: 创建层并定义端口配置计算网格
Step4:经过一系列设置,进行仿真得
1)天线方向图(fixed theta 选择0~90若干取值,这里为0,10,30,45,70,90)
2)反射系数
3)3D试图观察微带缝隙天线基本结构
Step5: 修改enclosure option设置
Step6: 新建回波损耗特性图,运行仿真,得到输出回波损耗特性图
Step7: 新建匹配电路
Step8: 运行仿真,得到 1)反射系数图
2)输出回波损耗特性图
Step9: 观察该微带缝隙天线的电流和电场 电流:
电场:
四.心得体会
通过本次实验,我了解了微带缝隙天线的概念,掌握了MWO EM structure仿真方法和天线基本参数及优化设计方法,受益匪浅。
第四篇:网络数据库讲稿(触发器)
网络数据库讲稿
3/26/2013
触发器
P191
一、触发器概述
1.是一种特殊的存储过程。
2.不能被显式调用,只能由一些特定的操作(命令)引发(激活),这些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每个触发器由三部分组成
①触发器名称:命名规则与变量名、存储过程名相同; ②激活该触发器的操作(命令动词)。③一个存储过程。
4.使用触发器可强制实现数据的一致性和完整性。
二、触发器的分类(按引发命令分类)及其工作原理
1.DML触发器(表级)(1)触发器必须依附于某一个表(触发器必须被包含在某一个表中)。(2)激活该触发器的操作:可以是INSERT、DELETE、UPDATE之一。(3)当上述操作发生在包含触发器的表上时,触发器中的过程被自动执行。(4)支持两种类型的触发器: ①AFTER 可以为同一表的同一操作定义多个该类型的触发器,并可定义执行顺序; ②INSTEAD OF 同一表的同一操作只能定义一个该类型的触发器。(5)工作原理
P193 临时逻辑表INSERTED和DELETED。2.DDL触发器(数据库级和服务器级)(1)触发器必须依附于某一个数据库(触发器必须被包含在某一个数据库中)。
(2)激活该触发器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。
(3)当上述操作发生在包含触发器的数据库上时,触发器中的过程被自动执行。(4)只有AFTER型触发器。
三、创建DML触发器
P194 用命令CREATE TRIGGER创建 例: 1.
CREATE TRIGGER 增加学生学分 ON 成绩
//只能增加一条记录
FOR INSERT AS DECLARE @XH CHAR(6),@KCH CHAR(8),@FS DECIMAL(4,1)SELECT @XH=学号,@KCH=课程编号,@FS=分数 FROM INSERTED IF @FS>=60
网络数据库讲稿
3/26/2013
UPDATE 学生 SET 已修学分
=已修学分+(SELECT 学分 FROM 课程 WHERE 课程编号=@KCH)
WHERE 学号=@XH 2.
CREATE TRIGGER 减少学生学分 ON 成绩 FOR DELETE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)3.CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)UPDATE 学生 SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60)
4.“修改学生学分”也可改为:
CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN
网络数据库讲稿
3/26/2013(SELECT 课程编号 FROM 成绩
WHERE 学生.学号=成绩.学号 AND 分数>=60))
然后可执行下列命令,并检验执行结果。
--INSERT INTO 成绩 VALUES('200202','L2020308',83)--INSERT INTO 成绩 VALUES('200202','L2030501',80)--INSERT INTO 成绩 VALUES('200202','L2030506',75)--DELETE FROM 成绩 WHERE 学号='200202' AND LEFT(课程编号,1)='L'--UPDATE 成绩 SET 分数=80 WHERE 学号='200202' AND LEFT(课程编号,1)='L'
四、创建DDL触发器
P198 例: 1.P199 2.CREATE TRIGGER 禁删数据库ON ALL SERVER FOR DROP_DATABASE AS PRINT '请不要删除数据库!' ROLLBACK TRANSACTION
DROP DATABASE 订货管理
五、嵌套触发器和递归触发器
P199, P200
六、管理触发器
P201 1.查看 2.修改 3.禁用 4.删除
--根据成绩表计算每个学生的已修学分
update 学生set 已修学分=(select sum(学分)from 课程 where 课程编号in(select 课程编号from 成绩where 学生.学号=成绩.学号 and 分数>=60))
--修改插入触发器,使得向成绩表中插入多条记录,也能成功执行 CREATE TRIGGER 插入学生学分ON 成绩 FOR insert
网络数据库讲稿
3/26/2013 AS UPDATE 学生SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程 WHERE 课程编号IN(SELECT DISTINCT 课程编号FROM inserted WHERE 学生.学号=inserted.学号AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号FROM inserted WHERE 学生.学号=inserted.学号AND 分数>=60)
select * from 成绩
select 学号,已修学分from 学生
INSERT INTO 成绩VALUES('200202','L2020308',83)INSERT INTO 成绩VALUES('200202','L2030501',80)INSERT INTO 成绩VALUES('200202','L2030506',75)INSERT INTO 成绩VALUES('200201','L2020308',83)INSERT INTO 成绩VALUES('200201','L2030501',80)INSERT INTO 成绩VALUES('200201','L2030506',75)
select * into 备份成绩from 成绩 //备份成绩表 select 学号,姓名,已修学分from 学生
insert into 成绩 select * from 成绩
INSERT INTO 成绩VALUES('200212','L2030506',75)
第五篇:实验七固定资产管理
实验七固定资产管理
【实验目的】
1.掌握用友ERP-U8管理软件中的固定资产管理系统的相关内容。
2.掌握固定资产管理系统初始化、日常业务处理、月末处理的操作。
【实验内容】
1.固定资产管理系统参数设置、原始卡片录入。
2.日常业务:资产增减、资产变动、资产评估、生成凭证、账表查询。
3.月末处理:计提减值准备、计提折旧、对账和结账。
【实验准备】
引入“实验二”账套数据。
【实验要求】
以账套主管“陈明”的身份进行固定资产管理操作。
【实验步骤】
1.启用并注册固定资产管理系统。
2.初始设置。
(1)设置控制参数:启用月份、折旧信息、财务接口、编码方案。
(2)设置资产类别。
注意:资产类别编码不能重复,同级的资产类别名称不能相同。
(3)设置部门对对应折旧科目。
(4)设置增减方式的对应科目。
(5)录入原始卡片。
3.日常及期末处理
(1)资产增加。
(2)资产评估。
(3)折旧处理。
(4)资产减少。
(5)总账系统处理。
(6)账表管理。
(7)对账。
(8)结账。
4.下月业务:资产原值变动、资产部门转移、计提减值准备、资产盘点。
【实验心得】
通过此次试验,我了解到固定资产管理系统是按项折旧的,而且系统初建工作量较其他系统大,庆幸的是日常工作不多。系统启用后录入的原始卡片不能在修改,因此在录入时要十分细心,避免出错。通过此次电算化实训,再一次另外深刻体会到做会计工作时,必须专心致志,万万不可分心出错,出错有时修改很困难必须回到最初状态,有时甚至修改不了。因此,做会计工作必须小心谨慎,细心。这次会计电算化实训令我获益匪浅。