日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 數據庫 > SQL Server > 正文

SQL Server 利用觸發器對多表視圖進行更新的實現方法

2024-08-31 01:04:16
字體:
來源:轉載
供稿:網友

其步驟就是:利用update操作觸發器產生的2個虛擬表【inserted】用來存儲修改的數據信息和【deleted】表,然后將對應的數據更新到對應數據表中的字段信息中;

觸發器,多表視圖,更新,SQLServer

1.首先創建3個表:

a.信息表:

USE [SQL-LI]BEGIN TRANSACTION CHUANGJIAN_XINXIN_TAB --創建命名為【XINXIN_TAB】的數據表,同時不允許字段為空CREATE TABLE XINXIN_TAB(姓名 NVARCHAR(10) NOT NULL,性別 NVARCHAR(1) NOT NULL,學號 INT NOT NULL,班級 NVARCHAR(20) NOT NULL,出生日期 DATE NOT NULL,CONSTRAINT XUEHAO_YUESU PRIMARY KEY CLUSTERED([學號]ASC))COMMIT TRANSACTION CHUANGJIAN_XINXI_TABGO

b.明細分數表:

USE [SQL-LI] CREATE TABLE FENSHU_TAB([學號] INT NOT NULL,[語文] DECIMAL(3,1) NOT NULL,[數學] DECIMAL(3,1) NOT NULL,[英語] DECIMAL(3,1) NOT NULL)GO

c.綜合分數表:

USE [SQL-LI] CREATE TABLE ZHONGHE_TAB([姓名] NVARCHAR(10) NOT NULL,[學號] INT NOT NULL,[總分] DECIMAL(4,1) NOT NULL,[平均分] DECIMAL(3,1) NOT NULL)GO

2.1.【信息表】和【明細分數表】插入對應表中的數據:

USE [SQL-LI] --插入【XINXIN_TAB】表中的5條記錄INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[學號] ,[性別] ,[班級] ,[出生日期] )VALUES('李曉峰',6080,'男','計算機','2013-05-03')INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[學號] ,[性別] ,[班級] ,[出生日期] )VALUES('李曉峰1',6081,'男','計算機1','2013-05-04')INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[學號] ,[性別] ,[班級] ,[出生日期] )VALUES('李曉峰2',6082,'男','計算機2','2013-05-05')INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[學號] ,[性別] ,[班級] ,[出生日期] )VALUES('李曉峰3',6083,'男','計算機3','2013-05-06')INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[學號] ,[性別] ,[班級] ,[出生日期] )VALUES('張曉',6084,'女','美術','2013-05-07')--插入【FENSHU_TAB】表中的5條記錄INSERT INTO [DBO].FENSHU_TAB ([學號] ,[語文] ,[數學] ,[英語] )VALUES(6080,99.5,98.6,59.2)INSERT INTO [DBO].FENSHU_TAB ([學號] ,[語文] ,[數學] ,[英語] )VALUES(6081,93.5,94.3,55.8)INSERT INTO [DBO].FENSHU_TAB ([學號] ,[語文] ,[數學] ,[英語] )VALUES(6082,96.5,78.6,58.5)INSERT INTO [DBO].FENSHU_TAB ([學號] ,[語文] ,[數學] ,[英語] )VALUES(6083,99.5,68.4,89.2)INSERT INTO [DBO].FENSHU_TAB ([學號] ,[語文] ,[數學] ,[英語] )VALUES(6084,99.7,98.7,59.4)GO

【信息表】的數據:

觸發器,多表視圖,更新,SQLServer

【明細分數表】的數據:

觸發器,多表視圖,更新,SQLServer

2.2.運算記錄【綜合分數表】的數據:

插入【ZHONGHE_TAB】中的數據USE [SQL-LI] --聲明3個變量分別用來接收【平均分】,【總分】,【姓名】,和一個控制循環的條件變量@I_WHILE_XUEHAODECLARE @I_WHILE_XUEHAO INT,@ZONGFEN DECIMAL(4,1),@AVGFEN DECIMAL(3,1),@XINGMING NVARCHAR(10);SELECT @I_WHILE_XUEHAO =6080;--使這個變量【@I_WHILE_XUEHAO】的值指定在【學號】字段上WHILE(@I_WHILE_XUEHAO >=6080 AND @I_WHILE_XUEHAO <6085)BEGIN--求取【平均分】,【總分】,【姓名】并存在聲明的變量中SELECT @ZONGFEN =(F.語文 +F.數學 +F.英語 ),@AVGFEN =(F.語文 +F.數學 +F.英語 )/3,@XINGMING =X.姓名 FROM[DBO].XINXIN_TAB AS X INNER JOIN [DBO].FENSHU_TAB AS F ON X.學號 =F.學號 WHERE X.學號 =@I_WHILE_XUEHAO --與【學號同步】--將其變量的數據插入到【ZHONGHE_TAB】的對應字段上INSERT INTO [DBO].ZHONGHE_TAB ([姓名] ,[學號] ,[平均分] ,[總分] )VALUES(@XINGMING ,@I_WHILE_XUEHAO ,@AVGFEN ,@ZONGFEN )SELECT @I_WHILE_XUEHAO +=1;  --與【學號同步】ENDGO

【綜合分數表】的數據:

觸發器,多表視圖,更新,SQLServer

3.1.1.創建3個表關聯的視圖:

USE [SQL-LI] GOCREATE VIEW SHITU_FFENSHU_XINXI(姓名,學號,平均分,總分,班級,出生日期)ASSELECT TOP 800 X.姓名 ,F.學號 ,Z.平均分 ,Z.總分 ,X.班級 ,X.出生日期 FROM[DBO].XINXIN_TAB AS X INNER JOIN [DBO].FENSHU_TAB AS F ON X.學號 =F.學號   INNER JOIN [DBO].ZHONGHE_TAB AS Z ON F.學號 =Z.學號   ORDER BY F.學號 ASC  GO

查看創建的視圖:

觸發器,多表視圖,更新,SQLServer

3.2.1.通過視圖修改多個數據表的信息????:

UPDATE [SQL-LI].[dbo].[SHITU_FFENSHU_XINXI]SET [姓名] = 'aaaaa', --此字段在【信息表】中[平均分] =111  --此次字段在【分數】中WHERE [學號]=6080GO

結果:

觸發器,多表視圖,更新,SQLServer

觸發器,多表視圖,更新,SQLServer

下面就寫個利用觸發器對其多表進行更新的方法:

a.這里就利用instead of 代替觸發來代替對各表中的字段內的信息進行修改:

USE [SQL-LI] GOCREATE TRIGGER TRIGG_UPDATE --創建一個upda觸發器DML--關聯到[SHITU_FFENSHU_XINXI]視圖上ON[DBO].[SHITU_FFENSHU_XINXI]INSTEAD OF UPDATE --代替觸發器執行UPDATE功能;【但是只能定義一個增刪改的INSTEAD OF代替觸發】。AS--聲明接受變量用于存儲【inserted】表上的數據DECLARE @XINGMING NVARCHAR(10),@XUEHAO INT,@AVGFEN DECIMAL(3,1),@ZONGFEN DECIMAL(4,1),    @BANJI NVARCHAR(20),@CHUSHENGRIQI DATE;    --篩選【inserted】表中學號最小的一行數據SELECT @XUEHAO =MIN(學號) FROM[inserted] --遍歷【inserted】表WHILE(@XUEHAO IS NOT NULL)BEGIN--將【inserted】表中的數據存放到相應的變量中SELECT @XUEHAO =MIN([學號])FROM[inserted] WHERE [學號]=@XUEHAO SELECT @XINGMING=[姓名] FROM[inserted] WHERE[學號] =@XUEHAO SELECT @AVGFEN=[平均分]FROM[inserted] WHERE[學號] =@XUEHAO SELECT @ZONGFEN=[總分] FROM[inserted] WHERE[學號] =@XUEHAO SELECT @BANJI =[班級]FROM[inserted] WHERE[學號] =@XUEHAO SELECT @CHUSHENGRIQI=[出生日期]FROM[inserted] WHERE[學號] =@XUEHAO --找出視圖中的字段對應相應表的字段/*因為視圖中的[姓名]/[班級]/[出生日期]字段是XINXIN_TAB 中的字段,故修改【XINXIN_TAB】中對應的字段數據之*/UPDATE[DBO].XINXIN_TAB SET [姓名]=@XINGMING ,[班級]=@BANJI ,[出生日期]=@CHUSHENGRIQI WHERE[學號]=@XUEHAO --道理同上UPDATE[DBO].FENSHU_TAB SET[學號]=@XUEHAO WHERE[學號]=@XUEHAO --道理同上UPDATE[DBO].ZHONGHE_TAB SET[平均分]=@AVGFEN ,[總分]=@ZONGFEN WHERE[學號]=@XUEHAO --修改完成后就開始篩選【inserted】表中下一條數據記錄SELECT @XUEHAO =MIN([學號])FROM[inserted] WHERE[學號]>@XUEHAO--然后給while中判斷 ENDGO

a1.注意的是視圖不是數據表沒有存放數據,將從【inserted】表中的數據提取后賦給對應數據表內的字段中;

觸發器,多表視圖,更新,SQLServer

對象資源管理器中的圖示:

觸發器,多表視圖,更新,SQLServer

 3.萬事俱備,開始通過視圖修改多表中的數據(驗證):

a

USE [SQL-LI] --查看未修改前的視圖數據信息SELECT* FROM[DBO].SHITU_FFENSHU_XINXI GOUPDATE[DBO].SHITU_FFENSHU_XINXI --修改【SHITU_FFENSHU_XINXI】中對應的字段數據SET[姓名]='liyifeng' ,[平均分]=66.6 ,[總分]=88.8 ,[班級]='計算機SQLServer' ,[出生日期]='2013-05-05' --修改篩選WHERE[學號]=6080 GO--查看修改后的視圖數據信息SELECT* FROM[DBO].SHITU_FFENSHU_XINXI GO

修改前后對比的結果圖示:

觸發器,多表視圖,更新,SQLServer

修改后的數據表中的數據:

USE [SQL-LI] SELECT* FROM[XINXIN_TAB] WHERE[學號]=6080SELECT* FROM[FENSHU_TAB] WHERE[學號]=6080SELECT* FROM[ZHONGHE_TAB] WHERE[學號]=6080GO

觸發器,多表視圖,更新,SQLServer

4.觸發器在數據庫里面就像顆炸彈一樣,只要滿足氣要求就會被觸發,就會對數據庫里面的數據進行觸發修改,所以不需要室就盡量將其關閉掉,用的時候就將其開啟:

關閉:

USE [SQL-LI] GODISABLE TRIGGER [DBO].TRIGG_UPDATE --關閉觸發器【TRIGG_UPDATE】ON SHITU_FFENSHU_XINXIGO

觸發器,多表視圖,更新,SQLServer

開啟:

USE [SQL-LI] GOENABLE TRIGGER [DBO].TRIGG_UPDATE --開啟觸發器【TRIGG_UPDATE】ON[DBO].[SHITU_FFENSHU_XINXI] --觸發器所在的視圖GO

觸發器,多表視圖,更新,SQLServer

GO

希望我寫的能為你解決一點問題,還望指教!謝謝!

 

注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲一区精品在线| 久久精品黄色片| 欧美日韩国产一区中文午夜| 中文字幕欧美亚洲| 国产专区中文字幕| 欧美亚洲专区| 亚洲成在线观看| 亚洲国产福利| 一级国产黄色片| 白嫩少妇丰满一区二区| 日韩视频专区| 91久久精品在线| 国产无套粉嫩白浆在线2022年| 精品熟女一区二区三区| 国产在线看一区| 日韩精品视频在线观看网址| 久久精品蜜桃| 久久精品久久久久| 亚洲深夜福利| 黄色在线资源| 日韩激情一区| 免费看日韩精品| 91最新在线| 日韩欧美中文视频| av亚洲免费| 日韩视频第二页| 日韩三级一区二区| 欧美日韩在线播放一区| 欧美三级日韩在线| av影视在线看| 亚洲福利精品在线| 日本免费看黄| 欧美日韩国产大片| a√免费观看在线网址www| 国产一区成人| 国产高清在线视频| 国产视频一二区| 日韩专区视频网站| 精品在线99| 欧美日韩亚洲91| 日韩国产欧美| 69av亚洲| 日本黄色一区二区| 在线观看91精品国产入口| 欧美日韩国产免费观看视频| 中文字幕日韩欧美在线| 91蜜桃婷婷狠狠久久综合9色| 欧美亚洲另类制服自拍| 日韩在线视频精品| 午夜一区二区视频| 一区视频在线播放| 精品乱人伦一区二区三区| 国产成人精品免费久久久久| 91精品日本| 国产日韩av高清| 日韩欧美一二三区| 亚洲免费精品| 首页国产欧美久久| 日韩欧美一级在线播放| 国产在线不卡一区| 一级特黄大欧美久久久| 欧美日韩综合视频| 精品欧美不卡一区二区在线观看| 久久99久久久久久久噜噜| 日韩精品视频在线观看网址| 亚洲天堂国产视频| 国产高清精品在线| 日韩免费高清一区二区| av不卡免费看| 久久精品网站免费观看| 婷婷精品视频| 亚洲免费看av| 欧美 日韩 国产 高清| 91精品国产调教在线观看| 欧美 日韩 国产在线| 亚洲成年网站在线观看| 午夜私人影院在线观看| 欧美日韩中文字幕精品| 日韩a一区二区| 欧美 日韩 国产 高清| 欧美日韩在线不卡| 九七久久人人| 久久99精品久久久久子伦| av三级在线播放| 精品999视频| 国产一级片播放| 欧美日韩国产首页在线观看| 91精品国产91久久| 欧美 日韩 国产 在线| 中文字幕日韩精品在线| 一区二区三区免费看视频| 国产亚洲人成a一在线v站 | 成人久久久久| 欧美日韩一级片在线观看| 日韩欧美国产片| 亚洲a一级视频| 九七久久人人| 欧美一级手机免费观看片| 日韩午夜高潮| 日韩福利视频导航| 日韩精品第一区| 不卡福利视频| 国产日韩精品视频| 日韩视频精品在线| 一级国产黄色片| 一区二区精品区| 91精品国产91久久久久| 欧美一卡2卡三卡4卡5免费| 国产三级在线播放| 九七久久人人| 久久夜色精品国产欧美乱极品| 91精品免费看| 亚洲成av人片一区二区密柚| 日韩你懂的电影在线观看| 91久久精品国产91性色69| 欧美一级搡bbbb搡bbbb| 欧美日韩成人综合| 黄色国产在线| 欧美日韩国产123区| 国产乱码在线观看| 国产欧亚日韩视频| 亚洲欧美久久久| 亚洲欧美99| 91欧美日韩在线| 一区二区视频免费看| 91麻豆视频网站| 日韩免费视频一区二区| 精品三级在线| 91精品国产综合久久精品| 国产一级在线播放| 国产福利一区二区精品秒拍| 日韩高清在线一区二区| 亚洲人线精品午夜| 久久精品夜夜夜夜久久| 日韩精品丝袜在线| 伊人永久在线| 一区二区在线观| 午夜一区二区三区| wwwav在线播放| 午夜精品一区二区三区免费视频| 中文字幕精品在线播放| 不卡在线视频| 亚洲国产专区| 精品一二线国产| 国产一级片网站| 最近高清中文在线字幕在线观看| 精品中文在线| 一级片在线播放| 久草视频在线看| 二区三区中文字幕| 欧美日韩在线视频首页| 中文字幕亚洲免费| 日韩.欧美.亚洲| 国产一二三四| 91色在线看| 国产乱国产乱300精品| 国产区日韩欧美| 日韩精品国产欧美| 精品午夜av| 99久久精品国产亚洲| a视频免费在线观看| 日韩国产亚洲欧美| 亚洲一卡二卡在线观看| 国产日产一区二区三区| 国产在线一在线二| 中文字幕最新精品| 精品国产乱码久久久久久牛牛| 日韩视频精品| 日韩中文在线视频| 欧美日韩国产在线播放| 日韩一级免费在线观看| 日韩欧中文字幕| 免费视频国产一区| 欧美一级久久久久久久久大| 精品网站999| 精品在线91| 亚洲国产福利| 91精品国产亚洲| 日韩不卡一区二区| 一区二区不卡视频在线观看| 日韩区欧美区| 国产中文在线视频| 日韩在线视频网| 日韩福利视频导航| 99久久精品国产成人一区二区| 亚洲最新永久观看在线| 精品欧美久久久| 国产一二三区精品视频| 亚洲免费精品| 日韩精品福利一区二区三区| 一区二区不卡在线播放| 91精品久久久久久久91蜜桃| 日韩中文字幕第一页| 亚洲黄页一区| 国产欧美日韩亚洲| aaa大片在线观看| 国产福利免费观看| 在线看av的网址| 国产黄色精品| 欧美日韩国产黄色| 一区二区91| 欧美日韩中文字幕综合视频| 亚洲一区在线观看免费| 极品久久久久久| 日韩精品在线免费看| 中文字幕亚洲乱码| 91精品在线视频观看| 欧美大片在线观看一区| 精品视频www| 91精品国产日韩91久久久久久| 日韩一级精品| 日韩精品一级| 日韩精品福利一区二区三区| 日韩欧美中文字幕视频| 欧美日韩中文字幕综合视频| 天天综合天天| 91精品国产丝袜白色高跟鞋| 午夜一区二区视频| 日韩欧美国产高清91| 日韩欧美在线字幕| 精品激情国产视频| 中文字幕线观看| 伊人伊成久久人综合网小说| 国产高清一级片| a天堂在线资源| 国产性一级片| 亚洲大片免费看| 国产亚洲人成a一在线v站| 日韩中文字幕视频网| 精品日韩欧美在线| 中文字幕精品一区二| 国产福利在线导航| 国产卡1卡2卡三卡在线| 婷婷中文字幕在线观看| 久久久精品福利| 日韩欧美一卡二卡| 影音先锋中文字幕在线观看| 日韩一级精品| 午夜一区二区三区| 国产h片在线观看| 国产在线欧美日韩| 色www精品视频在线观看| 国产日韩av一区二区| 91精品999| 国产一区高清视频| 久久精品在线观看| 粉嫩喷白浆久久| 亚洲三级免费看| 日韩欧美国产成人一区二区| 91精品国产自产在线| 亚洲福利在线视频| 日韩中文首页| 91精品国产高清| 欧美三级网址| 日韩精品免费视频一区二区三区| 国产在线导航| av免费观看网站| 视频一区二区中文字幕| 欧美亚洲国产激情| 欧美日韩中文字幕在线| 亚洲第一视频网站| 国产永久在线观看| 欧美日韩在线第一页| 国产劲爆久久| 欧美日韩中国免费专区在线看| 欧美日韩国产首页| 国产真实乱子伦精品视频| 国产综合成人久久大片91| 中文字幕亚洲区| 日韩在线中文| 欧美日韩高清在线一区| 亚洲综合在线中文字幕| 天天摸日日摸狠狠添| 中文字幕在线观看国产| 成人欧美亚洲| 亚洲三级网站| 天天综合天天| 国产午夜精品视频免费不卡69堂 | 精品国自产在线观看| 午夜伊人狠狠久久| wwwav91com| 91精品国产日韩91久久久久久| 国产一级免费在线观看| 一区二区中文字幕在线| 日韩精品在线私人| 日本视频久久久| 蜜桃视频一日韩欧美专区| 欧美日韩色综合| 国产欧美久久久久久久久| 一区三区二区视频| 国产欧美日韩精品在线观看| 人人做人人澡人人爽欧美| 精品视频www| 国产偷国产偷亚洲清高网站 | 欧美三级中文字幕在线观看| 国产在线拍揄自揄拍| 一区二区高清视频| √新版天堂资源在线资源| 国产九九在线| 77777_亚洲午夜久久多人| 伊人永久在线| 亚洲专区一二三| 精品国产欧美日韩| 在线视频一区二区三区在线播放 | 欧美日韩免费高清| 午夜一区二区三区视频| 日韩高清不卡一区| 日韩在线 中文字幕| 91www成人久久| 中文字幕欧美日韩在线| 一区二区三区在线播放欧美| 日韩精品中文字幕第1页| 国产高清精品在线| 欧美日韩中文字幕精品| 国产不卡在线| 九九九精品视频| 日韩av不卡在线观看| 中文在线不卡视频| 日韩欧美中文字幕公布| 中文字幕日韩在线视频| 国产欧美综合视频| 欧美国产中文| 国产不卡在线| 日本黄色一区二区三区| 最近中文字幕日韩精品| 亚洲娇小xxxx欧美娇小| 日韩欧美中文免费| 欧美日韩99| 国产在线一区二区视频| 日韩国产成人| 亚洲高清免费一级二级三级| 久精品在线观看| 亚洲高清精品视频| 国产在线视频不卡| 精品av中文字幕在线毛片| 国产一区在线精品| 亚洲第一页中文字幕| 日韩av一区二| 日韩中文首页| 日韩精品国产欧美| 日韩欧美中文字幕一区| 91精品国产亚洲| 亚洲福利一区二区三区| 91精品国产自产在线观看永久∴| 一二三区精品福利视频| 精品视频在线导航| 久久99精品久久久久久青青日本 | 中文精品在线观看| 中文字幕亚洲视频| 精品国产欧美成人夜夜嗨| 精品国产免费观看一区| 色综合天天综合网国产成人综合天| 久久精品卡一| 日韩精品视频在线观看网址| 在线视频1区2区| 亚洲综合在线电影| 精品一二线国产| 国产乱码在线| 欧美日韩精品三区| 日韩中文字幕第一页| 国产99在线 | 亚洲| 国产在线一区二区视频| 在线观看国产一级片| 国产香蕉免费精品视频| 国产不卡视频在线| 在线欧美日韩精品| 欧美国产综合在线V| 亚洲综合三区| 久久视频一区| 国产不卡在线观看视频| 一区二区三区在线免费| 久久久久久久久综合| 最新中文字幕在线| 国产字幕中文| 亚洲欧美中文字幕| 日韩精品在线第一页| 欧美日韩一区二区在线视频| 九九视频精品免费| 欧美日韩三级一区| 日韩欧美综合在线视频| 欧美日韩在线不卡一区| 精品在线91| 国产日韩成人精品| 日韩.欧美.亚洲| 久久婷婷综合国产| 日韩精品视频免费| 福利一区二区| www.狠狠干| 亚洲午夜av| 欧洲精品久久久| 欧美日韩亚洲视频| 欧美激情一区二区三区在线| 日韩三级免费观看| 亚洲精品中文字幕乱码三区不卡| 日韩精品视频在线观看免费| 精品久久蜜桃| 欧美日韩在线不卡视频| 欧美日韩国产综合久久| wwwwww在线观看| 婷婷精品视频|