国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL觸發器

2024-07-21 02:46:04
字體:
來源:轉載
供稿:網友
SQL觸發器 觸發器(trigger)是SQL server 提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用于加強數據的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。SQL3的觸發器是一個能由系統自動執行對數據庫修改的語句。 觸發器可以查詢其他表,而且可以包含復雜的SQL語句。它們主要用于強制服從復雜的業務規則或要求。例如:您可以根據客戶當前的帳戶狀態,控制是否允許插入新訂單。觸發器也可用于強制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數據庫關系圖,則可以在表之間創建關系以自動創建外鍵約束。 觸發器與存儲過程的唯一區別是觸發器不能執行EXECUTE語句調用,而是在用戶執行Transact-SQL語句時自動觸發執行。 查詢數據庫中所有觸發器:select * from sysobjects where xtype='TR'1、語法
create trigger [shema_name . ] trg_nameon { table | view }[ with encryption ]{ for | after | instead of }{ insert , update , delete }assql_statement

insert觸發器實例

create trigger teston alfor insertasdeclare @id int,@uid int,@lid int,@result charselect @id=id,@uid=uid,@lid=lid,@result=result from insertedif(@lid=4)begin   update al set uid=99 where id=@id   PRint 'lid=4時自動修改用戶id為99'end

update觸發器實例

create trigger test_updateon al   for updateas   declare @oldid int,@olduid int,@oldlid int,@newid int,@newuid int,@newlid int   select @oldid=id,@olduid=uid,@oldlid=lid from deleted;   select @newid=id,@newuid=uid,@newlid=lid from inserted   if(@newlid>@oldlid)   begin   print 'newlid>oldid'   rollback tran;   end   else   print '修改成功'

delete觸發器實例

create trigger test_delete on al for delete as declare @did int,@duid int,@dlid int select @did=id,@duid=uid,@dlid=lid from deleted if(exists(select * from list where @dlid=id)) begin print '無法刪除' rollback tran; end else print '刪除成功'


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 如东县| 湘乡市| 台中县| 石狮市| 定西市| 元江| 开远市| 哈密市| 池州市| 曲沃县| 临夏县| 吉林市| 荣昌县| 肃宁县| 于都县| 吉木乃县| 衡东县| 藁城市| 广平县| 平定县| 汉源县| 财经| 恩平市| 逊克县| 新宁县| 光山县| 西乌| 达孜县| 图片| 集安市| 镇远县| 历史| 竹山县| 阳谷县| 呈贡县| 乌拉特后旗| 竹山县| 华池县| 颍上县| 山东省| 安溪县|