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

首頁 > 學院 > 開發設計 > 正文

觸發器和存儲過程

2019-11-14 14:18:17
字體:
來源:轉載
供稿:網友

觸發器

現有字典表(Dict)

字段說明
Id標示
ItemKey
ItemValue
UpperId上層標示

需求一:當新增一條記錄的時候,若已存在相同鍵的,拒絕插入

//操作步驟:展開相關表,右擊‘觸發器’,新建即可

復制代碼
USE [sqlffwj]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER [dbo].[CheckKeyRepeated]   ON  [dbo].[Dict]   for INSERTASif(select COUNT(*) from [Dict], inserted inobj where [Dict].ItemKey = inobj.ItemKey and [Dict].Id != inobj.Id) > 0BEGIN    raiserror('已有相同鍵,不能插入',16,1)    rollback tranEND
復制代碼

需求二:當刪除一條記錄的時候,若有下層記錄,拒絕刪除

復制代碼
USE [sqlffwj]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER [dbo].[CheckDependence]   ON  [dbo].[Dict]   for deleteASif(select COUNT(*) from [Dict], deleted delbj where [Dict].UpperId = delbj.Id) > 0BEGIN    raiserror('有下層記錄,不能刪除',16,1)    rollback tranEND
復制代碼

需求三:當刪除一條記錄的時候,若有下層記錄,下層也一起刪除

復制代碼
USE [sqlffwj]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER [dbo].[CheckDependence2]   ON  [dbo].[Dict]   AFTER deleteASwhile(select COUNT(*) from [Dict] where UpperId != 0 and UpperId not in (select Id from [Dict])) > 0BEGIN    delete from [Dict]     where UpperId != 0 and UpperId not in (select Id from [Dict])    END
復制代碼

 

 存儲過程

 現有用戶表(User)

字段說明
Id標示
Name姓名
Age年齡
DeptId部門標示

部門表(Dept)

字段說明
Id標示
Name名稱

需求一:用存儲過程查詢所有用戶的信息(標示、姓名、年齡、部門名)

 //操作步驟:展開數據庫,再展開可編程性,右擊‘存儲過程’,新建即可

復制代碼
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[GetUsers]ASBEGIN        select [User].Id '標示',[User].Name '姓名', [User].Age '年齡', [Dept].Name '部門' from [User] left join [Dept] on [User].DeptId = [Dept].IdENDGO
復制代碼
/* 調用 */exec GetUsers

需求二:用存儲過程查詢指定部門的用戶信息(標示、姓名、年齡、部門名)

復制代碼
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[GetUsersByDept](    @deptid int /* 部門標示 */    )ASBEGIN        select [User].Id '標示',[User].Name '姓名', [User].Age '年齡', [Dept].Name '部門'    from [User] left join [Dept] on [User].DeptId = [Dept].Id    where [Dept].Id = @deptidENDGO
復制代碼
/* 調用 */exec GetUsersByDept 2

需求三:在項目中用ADO調用存儲過程'GetUsersByDept'

1、環境:VS2010+sql2008

2、新建edmx文件,引用兩張表和存儲過程

 3、切換到‘模型瀏覽器’,‘添加函數導入’

 

4、在‘添加函數導入’面板,點擊‘獲取列信息’,獲取到列信息后再點擊‘創建新的復雜類型’,確定后就可以通過Func調用存儲過程了

 5、調用代碼Demo

            using (var context = new SqltestEntities())             {                var result = context.GetUsersByDept(2);                throw new Exception(result.Count().ToString());            }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济阳县| 辽宁省| 阳新县| 兴仁县| 宝山区| 兰州市| 武宣县| 定州市| 云安县| 大名县| 梁平县| 金坛市| 高青县| 大丰市| 临邑县| 富裕县| 兴山县| 来凤县| 阳西县| 荆门市| 鄂托克前旗| 罗定市| 林口县| 昌黎县| 滕州市| 汾西县| 仁化县| 绥芬河市| 彩票| 综艺| 佛冈县| 澄城县| 江源县| 大新县| 清远市| 文化| 屏山县| 定兴县| 法库县| 黑水县| 正安县|