国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

超詳細(xì)的SQL Server數(shù)據(jù)庫觸發(fā)器總結(jié)

數(shù)據(jù)庫 其他數(shù)據(jù)庫
觸發(fā)器(trigger)是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。

觸發(fā)器(trigger)是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),當(dāng)對一個表進(jìn)行操作( insert,delete, update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。

超詳細(xì)的SqlServer數(shù)據(jù)庫觸發(fā)器總結(jié)

一、觸發(fā)器的優(yōu)點

1. 觸發(fā)器是自動的。當(dāng)對表中的數(shù)據(jù)做了任何修改之后立即被激活。

2. 觸發(fā)器可以通過數(shù)據(jù)庫中的相關(guān)表進(jìn)行層疊修改。

3. 觸發(fā)器可以強(qiáng)制限制。這些限制比用CHECK約束所定義的更復(fù)雜。與CHECK約束不同的是,觸發(fā)器可以引用其他表中的列。

二、觸發(fā)器的分類

SqlServer包括三種常規(guī)類型的觸發(fā)器:DML觸發(fā)器、DDL觸發(fā)器和登錄觸發(fā)器。

1. DML(數(shù)據(jù)操作語言,Data Manipulation Language)觸發(fā)器

DML觸發(fā)器是一些附加在特定表或視圖上的操作代碼,當(dāng)數(shù)據(jù)庫服務(wù)器中發(fā)生數(shù)據(jù)操作語言事件時執(zhí)行這些操作。SqlServer中的DML觸發(fā)器有三種:

  • insert觸發(fā)器:向表中插入數(shù)據(jù)時被觸發(fā);
  • delete觸發(fā)器:從表中刪除數(shù)據(jù)時被觸發(fā);
  • update觸發(fā)器:修改表中數(shù)據(jù)時被觸發(fā)。

當(dāng)遇到下列情形時,應(yīng)考慮使用DML觸發(fā)器:

  • 通過數(shù)據(jù)庫中的相關(guān)表實現(xiàn)級聯(lián)更改
  • 防止惡意或者錯誤的insert、update和delete操作,并強(qiáng)制執(zhí)行check約束定義的限制更為復(fù)雜的其他限制。
  • 評估數(shù)據(jù)修改前后表的狀態(tài),并根據(jù)該差異才去措施。

2. DDL(數(shù)據(jù)定義語言,Data Definition Language)觸發(fā)器

DDL觸發(fā)器是當(dāng)服務(wù)器或者數(shù)據(jù)庫中發(fā)生數(shù)據(jù)定義語言(主要是以create,drop,alter開頭的語句)事件時被激活使用,使用DDL觸發(fā)器可以防止對數(shù)據(jù)架構(gòu)進(jìn)行的某些更改或記錄數(shù)據(jù)中的更改或事件操作。

3. 登錄觸發(fā)器

登錄觸發(fā)器將為響應(yīng) LOGIN 事件而激發(fā)存儲過程。與 SQL Server 實例建立用戶會話時將引發(fā)此事件。登錄觸發(fā)器將在登錄的身份驗證階段完成之后且用戶會話實際建立之前激發(fā)。因此,來自觸發(fā)器內(nèi)部且通常將到達(dá)用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日志。如果身份驗證失敗,將不激發(fā)登錄觸發(fā)器。

三、觸發(fā)器的工作原理

[DELETE, INSERT, UPDATE]對應(yīng)為當(dāng)執(zhí)行刪除、插入、更新三種動作時被觸發(fā)

執(zhí)行insert時,獲取插入后的數(shù)據(jù),可用select*from inserted讀取

執(zhí)行delete時,獲取刪除前的數(shù)據(jù),可用select*from deleted讀取

執(zhí)行update時,獲取更新前的數(shù)據(jù),可用select*from deleted讀取,獲取更新后數(shù)據(jù),可用select*from inserted讀取

超詳細(xì)的SqlServer數(shù)據(jù)庫觸發(fā)器總結(jié)

四、創(chuàng)建觸發(fā)器

1. 創(chuàng)建觸發(fā)器的語法:

  1. CREATE TRIGGER trigger_name 
  2.  ON table_name 
  3.  [WITH ENCRYPTION] 
  4.  FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE] 
  5.  AS  
  6.  T-SQL語句 
  7. GO 
  8. --with encryption 表示加密觸發(fā)器定義的sql文本 
  9. --delete,insert,update指定觸發(fā)器的類型 

2. 創(chuàng)建insert觸發(fā)器

  1. --創(chuàng)建insert觸發(fā)器 
  2. create trigger trig_insert 
  3. on student 
  4. after insert 
  5. as 
  6. begin 
  7.  if object_id(N'student_sum',N'U') is null--判斷student_sum表是否存在 
  8.  create table student_sum(stuCount int default(0));--創(chuàng)建存儲學(xué)生人數(shù)的student_sum表 
  9.  declare @stuNumber int; 
  10.  select @stuNumber = count(*)from student; 
  11.  if not exists (select * from student_sum)--判斷表中是否有記錄 
  12.  insert into student_sum values(0); 
  13.  update student_sum set stuCount =@stuNumber; --把更新后總的學(xué)生數(shù)插入到student_sum表中 
  14. end 
  15. --測試觸發(fā)器trig_insert-->功能是向student插入數(shù)據(jù)的同時級聯(lián)插入到student_sum表中,更新stuCount 
  16. --因為是后觸發(fā)器,所以先插入數(shù)據(jù)后,才觸發(fā)觸發(fā)器trig_insert; 
  17. insert into student(stu_name,stu_gender,stu_age)values('呂布','男',30); 
  18. select stuCount 學(xué)生總?cè)藬?shù) from student_sum;  
  19. insert into student(stu_name,stu_gender,stu_age)values('貂蟬','女',30);  
  20. select stuCount 學(xué)生總?cè)藬?shù) from student_sum; 
  21. insert into student(stu_name,stu_gender,stu_age)values('曹阿瞞','男',40);  
  22. select stuCount 學(xué)生總?cè)藬?shù) from student_sum; 

3. 創(chuàng)建delete觸發(fā)器

用戶執(zhí)行delete操作,就會激活delete觸發(fā)器,從而控制用戶能夠從數(shù)據(jù)庫中刪除數(shù)據(jù)記錄,觸發(fā)delete觸發(fā)器后,用戶刪除的記錄會被添加到deleted表中,原來表的相應(yīng)記錄被刪除,所以在deleted表中查看刪除的記錄。

  1. --創(chuàng)建delete觸發(fā)器 
  2. create trigger trig_delete 
  3. on student  
  4. after delete 
  5. as 
  6. begin 
  7.  select stu_id as 已刪除的學(xué)生編號,stu_name stu_gender,stu_age 
  8.  from deleted 
  9. end; 
  10. --執(zhí)行一一條delete語句觸發(fā)trig_delete觸發(fā)器 
  11. delete from student where stu_id=1

4. 創(chuàng)建UPDATE觸發(fā)器

update觸發(fā)器是當(dāng)用戶在指定表上執(zhí)行update語句時被調(diào)用被調(diào)用,這種類型的觸發(fā)器用來約束用戶對數(shù)據(jù)的修改。update觸發(fā)器可以執(zhí)行兩種操作:更新前的記錄存儲在deleted表中,更新后的記錄存儲在inserted表中。

  1. --創(chuàng)建update觸發(fā)器 
  2. create trigger trig_update 
  3. on student 
  4. after update 
  5. as 
  6. begin 
  7.  declare @stuCount int; 
  8.  select @stuCount=count(*) from student; 
  9.  update student_sum set stuCount =@stuCount; 
  10.  select stu_id as 更新前學(xué)生編號,stu_name as 更新前學(xué)生姓名 from deleted 
  11.  select stu_id as 更新后學(xué)生編號,stu_name as 更新后學(xué)生姓名 from inserted 
  12. end 
  13. --創(chuàng)建完成,執(zhí)行一條update語句觸發(fā)trig_update觸發(fā)器 
  14. update student set stu_name='張飛' where stu_id=2

五、管理觸發(fā)器

1. 查看觸發(fā)器

(1).查看數(shù)據(jù)庫中所有的觸發(fā)器

  1. --查看數(shù)據(jù)庫中所有的觸發(fā)器 
  2. use 數(shù)據(jù)庫名 
  3. go 
  4. select * from sysobjects where xtype='TR' 

sysobjects 保存著數(shù)據(jù)庫的對象,其中 xtype 為 TR 的記錄即為觸發(fā)器對象。在 name 一列,我們可以看到觸發(fā)器名稱。

(2).sp_helptext 查看觸發(fā)器內(nèi)容

  1. use 數(shù)據(jù)庫名 
  2. go 
  3. exec sp_helptext '觸發(fā)器名稱' 

將會以表的樣式顯示觸發(fā)器內(nèi)容。

除了觸發(fā)器外,sp_helptext 還可以顯示 規(guī)則、默認(rèn)值、未加密的存儲過程、用戶定義函數(shù)、視圖的文本。

(3).sp_helptrigger 用于查看觸發(fā)器的屬性

sp_helptrigger 有兩個參數(shù):第一個參數(shù)為表名;第二個為觸發(fā)器類型,為 char(6) 類型,可以是 INSERT、UPDATE、DELETE,如果省略則顯示指定表中所有類型觸發(fā)器的屬性。

  1. use 數(shù)據(jù)庫名 
  2. go 
  3. exec sp_helptrigger tableName 

2. 禁用啟用觸發(fā)器

  • 禁用:alter table 表名 disable trigger 觸發(fā)器名稱
  • 啟用:alter table 表名 enable trigger 觸發(fā)器名稱

如果有多個觸發(fā)器,則各個觸發(fā)器名稱之間用英文逗號隔開。

如果把“觸發(fā)器名稱”換成“ALL”,則表示禁用或啟用該表的全部觸發(fā)器。

3. 修改觸發(fā)器

  1. --修改觸發(fā)器語法 
  2. ALTER TRIGGER trigger_name  
  3.  ON table_name  
  4.  [ WITH ENCRYPTION ]  
  5.  FOR {[DELETE][,][INSERT][,][UPDATE]} 
  6.  AS 
  7.  sql_statement; 

4. 刪除觸發(fā)器

  1.  --語法格式: 
  2.  DROP TRIGGER { trigger } [ ,...n ] 
  3. 參數(shù): 
  4.  trigger: 要刪除的觸發(fā)器名稱 
  5.  n:表示可以刪除多個觸發(fā)器的占位符  

 

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2010-06-30 09:36:25

SQL Server

2011-04-01 16:35:09

SQL Server數(shù)觸發(fā)器

2010-09-13 16:46:10

SQL Server觸

2010-07-06 14:47:03

SQL Server數(shù)

2009-04-07 13:56:03

SQL Server觸發(fā)器實例

2010-07-23 15:26:29

SQL Server

2019-12-02 11:13:38

數(shù)據(jù)庫觸發(fā)器SQLServer

2010-07-16 10:19:31

2010-11-12 15:35:55

SQL Server約

2010-10-20 14:34:48

SQL Server觸

2010-09-13 17:03:34

sql server觸

2019-08-01 07:31:51

數(shù)據(jù)庫主機(jī)日志

2011-03-03 14:04:48

Oracle數(shù)據(jù)庫觸發(fā)器

2010-11-10 13:37:01

SQL Server觸

2010-10-22 11:10:43

SQL Server觸

2010-11-08 11:49:24

SQL Server管

2010-10-19 15:31:40

sql server觸

2011-03-03 09:30:24

downmoonsql登錄觸發(fā)器

2019-11-05 14:20:02

Oracle分組函數(shù)數(shù)據(jù)庫

2010-07-05 11:09:55

SQL Server觸
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲天堂资源| av中文字幕在线| 丝袜亚洲另类欧美综合| 91精品国产网站| 中文字幕乱码中文乱码51精品| 姬川优奈aav一区二区| 成人黄色电影网址| 日本一区二区免费在线观看视频 | 亚州国产精品久久久| 精品久久在线| 一区二区亚洲欧洲国产日韩| 99re6在线精品视频免费播放| 91麻豆精品国产综合久久久久久| 日韩国产福利| 色综合久久88色综合天天免费| 人人超碰在线| 好吊成人免视频| 裸体xxxx视频在线| 亚洲妇熟xx妇色黄| www.色就是色| 国产午夜精品久久| 自拍偷拍21p| 中文字幕制服丝袜成人av| h无码动漫在线观看| 久久99这里只有精品| 日韩暖暖在线视频| 欧美艳星介绍134位艳星| 91国在线精品国内播放| 精品一区二区三区亚洲| 久久精品久久久久久| 久久不卡日韩美女| 日韩视频免费在线| 亚洲天堂网站| 久久99国产综合精品女同| 欧美激情不卡| 日本一区精品| 麻豆视频观看网址久久| 欧洲精品在线视频| 亚洲伊人精品酒店| 亚洲精品色婷婷福利天堂| 午夜视频在线| 一道本成人在线| 麻豆传媒在线播放| 日韩理论片一区二区| 欧美性bbwbbwbbwhd| 91麻豆精品国产91久久久平台| 97在线看福利| 精品国产一区二区三区性色av| 在线播放一区二区精品视频| 欧美一级在线免费| 黄页网站在线播放| 亚洲宅男天堂在线观看无病毒| 成年人观看网站| 久久久精品免费免费| av手机在线看| 婷婷开心激情综合| av小片在线| 亚洲黄色在线观看| 欧美大片网站| 国产91精品久久久久| 欧美性videos| 96国产粉嫩美女| 亚洲国产日韩欧美在线| 一级毛片免费看| 久久久精品2019中文字幕之3| 黄页免费在线观看视频| 99国产精品国产精品毛片| 亚洲二区在线播放视频| 91精品国产一区二区三区动漫| 欧美精品一区二区三区精品| 国产精品国内视频| 一区二区三区在线观看免费| 久久久久久九九九九| 久久精品999| 国产日韩欧美精品在线观看| 国产亚洲一区二区三区在线观看 | 久久国产精品久久| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕在线乱| 久久亚洲捆绑美女| 一级免费视频| 在线不卡欧美精品一区二区三区| caoporn97在线视频| 亚洲电影av在线| 精品三区视频| 国产精品美女在线| 日韩不卡一二三区| 国产免费黄视频| 亚洲成av人**亚洲成av**| jizz性欧美| 91高清在线免费观看| 99亚洲视频| 日韩免费高清在线| 欧美日韩一区二区在线观看 | 91精品蜜臀一区二区三区在线| 91综合免费在线| 无码内射中文字幕岛国片| 91欧美精品成人综合在线观看| 欧美精品入口| 日韩 欧美 自拍| 国产精品天天看| 黄色网址在线免费观看| 久久精品成人动漫| 午夜激情久久| 超级碰在线观看| 香蕉成人伊视频在线观看| 免费v片在线观看| 97超碰色婷婷| 国产农村妇女毛片精品久久莱园子| 水蜜桃在线免费观看| 亚洲欧美日韩系列| 嗯啊主人调教在线播放视频 | re久久精品视频| 亚洲一区高清| 欧美性xxxxxxx| 亚洲午夜精品| 制服丝袜综合日韩欧美| 天天操天天干天天综合网| 一区二区三区| 在线观看一区二区三区三州| 一区二区三区中文字幕精品精品| 91在线超碰| 国产一区精品视频| 亚洲无线码一区二区三区| 日韩有码欧美| 一本一生久久a久久精品综合蜜 | heyzo高清国产精品| 亚洲999一在线观看www| eeuss鲁片一区二区三区在线观看| 嫩草香蕉在线91一二三区| 国产成人aa精品一区在线播放| 成人av综合在线| 伊人影院蕉久影院在线播放| 国产suv精品一区二区三区88区| 成人一区在线观看| www.51av欧美视频| 麻豆传媒一区二区| 欧美午夜影院在线视频| 日韩人体视频| 校园春色 亚洲色图| 久久久精品免费视频| 国产aⅴ综合色| 最新日韩精品| 久久久久久九九九九| 欧美日韩亚洲视频一区| 国产午夜精品一区在线观看| 男人的天堂成人| 精品三级av在线| 久久字幕精品一区| 黄在线免费观看| 欧美日韩一区二区三| 色综合久久99| 欧美一区二区三区另类| 激情婷婷丁香| 欧美一性一乱一交一视频| 国产精品护士白丝一区av| 欧美日韩一本| 黄色三级电影网| 成人av电影免费| 狠狠久久亚洲欧美| 成人国产精品入口免费视频| 黄色高清无遮挡| 国产成人欧美在线观看| 欧美视频免费在线| 日本免费新一区视频| 色老太综合网| 羞羞小视频视频| 国产精品二区二区三区| 日韩精品中文字幕视频在线| 日本一区二区动态图| 97偷自拍亚洲综合二区| 91高清在线观看视频| 国产欧美日韩小视频| 国产精品福利在线观看| 日韩欧美国产电影| 国产日韩高清在线| 亚洲人妖在线| 亚洲老司机网| 91美女在线| 日本xxxxx18| 欧美与黑人午夜性猛交久久久| 欧美吻胸吃奶大尺度电影 | 国产白丝在线观看| 九九视频精品在线观看| 亚洲综合中文字幕在线观看| 亚洲成人1234| 亚洲精品视频在线看| 亚洲综合社区| 电影一区二区在线观看| 黄av在线播放| 成人性生交免费看| 日本精品一区二区三区视频| 久久久之久亚州精品露出| 在线不卡a资源高清| 国产精品丝袜91| 久久精品免费看| 女同性一区二区三区人了人一| 国外成人福利视频| 免费超碰在线| 性生大片免费观看性|