>  有許多校驗數(shù)據(jù)和業(yè)務規(guī)則是否匹配的方法,在應用程序代碼中可以強制實施數(shù)據(jù)校驗,也可以由數(shù)據(jù)庫引擎執(zhí)行數(shù)據(jù)校驗。根據(jù)校驗的方法不同,規(guī)則需求將確定你的應用程序該如何正確地以及該在哪里校驗數(shù)據(jù),">
使用檢查約束驗證sql server中的數(shù)據(jù)--

使用檢查約束驗證sql server中的數(shù)據(jù)--

ID:9744099

大?。?8.50 KB

頁數(shù):10頁

時間:2018-05-07

使用檢查約束驗證sql server中的數(shù)據(jù)--_第1頁
使用檢查約束驗證sql server中的數(shù)據(jù)--_第2頁
使用檢查約束驗證sql server中的數(shù)據(jù)--_第3頁
使用檢查約束驗證sql server中的數(shù)據(jù)--_第4頁
使用檢查約束驗證sql server中的數(shù)據(jù)--_第5頁
資源描述:

《使用檢查約束驗證sql server中的數(shù)據(jù)--》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。

1、使用檢查約束驗證SQLServer中的數(shù)據(jù)>>  有許多校驗數(shù)據(jù)和業(yè)務規(guī)則是否匹配的方法,在應用程序代碼中可以強制實施數(shù)據(jù)校驗,也可以由數(shù)據(jù)庫引擎執(zhí)行數(shù)據(jù)校驗。根據(jù)校驗的方法不同,規(guī)則需求將確定你的應用程序該如何正確地以及該在哪里校驗數(shù)據(jù),本文將向你介紹如何使用數(shù)據(jù)庫檢查約束校驗SQLServer中的數(shù)據(jù)?! ∈裁词菣z查約束?  檢查約束是一個識別SQLServer表中每行可接受的列值的規(guī)則,檢查約束幫助實施域的完整性,域完整性定義了數(shù)據(jù)庫表中列的有效值,檢查  約束可以驗證單列的域完整性,也可以驗證多列的域完整性,在單個列上可以有多個檢查約束,如果插入或更新的數(shù)據(jù)違反了檢查約束,數(shù)據(jù)  

2、庫引擎將暫時停止INSERT和UPDATE操作。  檢查約束由邏輯表達式構成,邏輯表達式可能是單個表達式,如Salary<200000.00,也可能是多個表達式,如RentalDate>GETDATE  ()andRentalDate  中的數(shù)據(jù),檢查約束是基于列的,因此,即便表中某列的檢查約束沒有通過,也不會影響到表中其它列的INSERT和UPDATE操作,檢查約束可以在列級創(chuàng)建,也可以在表級創(chuàng)建。  在CREATETABLE語句中創(chuàng)建檢查約束  創(chuàng)建檢查約束的一個方法就是在創(chuàng)建表的時候創(chuàng)建,下面是一個簡單的CREATETABLE腳本,它包含了創(chuàng)建一個檢查約束的代碼:CREA

3、TETABLEdbo.Payroll (IDintPRIMARYKEY,PositionIDINT,SalaryTypenvarchar(10),Salarydecimal(9,2)CHECK(Salary<150000.00));  這里的CHECK子句關聯(lián)了Salary列,這是一個列級的約束,如果你創(chuàng)建了一個列級約束,你只能在檢查約束的邏輯表達式中使用列名,這里的檢查約束列就只允許Salary列的值小于150000。創(chuàng)建這個表時也會創(chuàng)建CHECK約束,約束名由系統(tǒng)自動生成,如果你想在CREATETABLE操作時命名你的檢查約束,代碼就可以變成下面這樣:CREATETABLEdbo

4、.Payroll (IDintPRIMARYKEY,PositionIDINT,SalaryTypenvarchar(10),Salarydecimal(9,2)CONSTRAINTCK_Payroll_SalaryCHECK(Salary<150000.00));  這里我將檢查約束命名為CK_Payroll_Salary了?! ∩厦娴睦佣純H在單個列上創(chuàng)建了檢查約束,而且也只有一個條件,其實檢查約束表達式可以包括多個條件,下面就是一個包含多個條件的檢查約束:CREATETABLEdbo.Payroll(IDintPRIMARYKEY,PositionIDINT,SalaryTyp

5、envarchar(10),Salarydecimal(9,2)CONSTRAINTCK_Payroll_SalaryCHECK(Salary>10.00andSalary<150000.00));  如果要讓SQLServer拒絕一條記錄,那在檢查約束邏輯表達式的最終輸出中需要計算為FALSE,因此,在這個例子中,檢查約束會驗證Salary大于10且小于150000,這兩個條件中任意一個檢查結果返回FLASE,都會直接拒絕Payroll表中對行的INSERT或UPDATE請求,提示也會顯示一條錯誤消息?! ∪绻阆雱?chuàng)建一個表級檢查約束,你可以使用下面的代碼:CREATETAB

6、LEdbo.Payroll(IDintPRIMARYKEY,PositionIDINT,Salarydecimal(9,2),SalaryTypenvarchar(10),CHECK(Salary>10.00andSalary<150000.00));  在這里我創(chuàng)建了單個表級約束,檢查Salary列,但可以使用表中的任意列,因為這是一個表級檢查,注意CHECK子句將會引起SQLServer生成一個檢查約束名,因為我沒有手動為其命名?! ≡诂F(xiàn)有表上創(chuàng)建檢查約束  有時,在你設計和創(chuàng)建好表后,你可能想要在表上放一個檢查約束,你可以使用ALTERTABLE語句來實現(xiàn),下面是一個例子

7、:ALTERTABLEdbo.Payrollonthly','Annual'));  我在這里的創(chuàng)建檢查約束將會檢查Payroll表中SalaryType列的值為Hourly,Monthly或Annual的所有記錄,我還給這個檢查約束起了一個名字,叫做CK_Payroll_SalaryType?! ∧阋部梢栽谝粋€ALTERTABLE語句中給表添加多個檢查約束,下面就是這樣一個例子:ALTERTAB

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。