国产探花免费观看_亚洲丰满少妇自慰呻吟_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());            }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永丰县| 西吉县| 通化县| 丰镇市| 油尖旺区| 济源市| 绥德县| 玉屏| 昭苏县| 黑山县| 开化县| 祁阳县| 湘潭县| 靖安县| 巴楚县| 南川市| 七台河市| 石柱| 安岳县| 鱼台县| 建阳市| 托克逊县| 筠连县| 平陆县| 平邑县| 潼南县| 永善县| 南昌县| 宁波市| 凌云县| 个旧市| 大竹县| 安顺市| 泸溪县| 东明县| 河北区| 博白县| 莫力| 宜城市| 睢宁县| 皮山县|