第一篇: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.下月業務:資產原值變動、資產部門轉移、計提減值準備、資產盤點。
【實驗心得】
通過此次試驗,我了解到固定資產管理系統是按項折舊的,而且系統初建工作量較其他系統大,慶幸的是日常工作不多。系統啟用后錄入的原始卡片不能在修改,因此在錄入時要十分細心,避免出錯。通過此次電算化實訓,再一次另外深刻體會到做會計工作時,必須專心致志,萬萬不可分心出錯,出錯有時修改很困難必須回到最初狀態,有時甚至修改不了。因此,做會計工作必須小心謹慎,細心。這次會計電算化實訓令我獲益匪淺。