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

首頁 > 開發 > 綜合 > 正文

不用企業管理器的情況下得知CHECK約束的屬性設置

2024-07-21 02:05:57
字體:
來源:轉載
供稿:網友


我們知道,在sql server企業管理器中,在“設計表”狀態下,當查看該表的check約束時,會看到check約束有“創建中檢查現存數據”、“對復制強制約束”、“對insert和update強制約束”三個復選框,那么如果不在企業管理器環境下,或者在應用程序中,我們如何得知某個check約束的這三個選項是否選中呢?

我查看了相關系統表的幫助說明,但里面對好多字段的說明都為“保留”、“僅供內部使用”等,沒有字段的作用說明。但我發現當改變三個選項的選中狀態時,sysobjects中相應check約束記錄的status字段值發生改變,為了得知其中是否有規律可循,我做了如下測試并得出一些結論,拿出來共享。

“創建中檢查現存數據”、“對復制強制約束”、“對insert和update強制約束”三項屬性分別對應000的三位,0為不選,1為選中。

建立一個測試表,為其建立列級check約束和表級check約束,先令其為空表。
下面結果中,等號左邊為三個屬性的選中狀態,右邊為sysobjects表中約束記錄的status字段值:
對于列級約束:
000=3330
001=3074
010=2306
011=2050
100=3330(保存后仍未選中,不知為何)
101=3074
110=2306
111=2
發現除111外,其余首位為1均作為0看待。

對于表級約束:
000=3328
001=3072
010=2304
011=2048
100=3328
101=3072
110=2304
111=0
可發現與列級約束有同樣的問題,同時,對于相同的二進制值,表級約束比列級約束少2。

但值得注意的是,以上測試是在表中無數據的情況下,故可能引起三位二進制數的最高位無意義。下面測試表中有數據的結果(在測試表中插入了符合各check約束的數據):

對于列級約束:
000=3330
001=3074
010=2306
011=2050
100=3330
101=3074
110=2306
111=2

對于表級約束:
000=3328
001=3072
010=2304
011=2048
100=3328
101=3072
110=2304
111=0

可見結果完全相同。
猜測原因是“創建中檢查現存數據”一項只在check約束保存瞬間作用,保存后系統即將其取消,故若查看已有的check約束,該選項已無意義,故為不選中狀態。

但在pubs庫中,發現系統已有的一些check約束的status初始值為6,不知何解?不過修改后與以上結果相符。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桦甸市| 东兴市| 邯郸市| 萝北县| 洪江市| 荣昌县| 曲麻莱县| 乐都县| 中卫市| 资阳市| 山东省| 乐清市| 石柱| 西平县| 大宁县| 中山市| 陵川县| 武夷山市| 平安县| 桐庐县| 汶川县| 玉溪市| 玉树县| 习水县| 宜兰市| 和平区| 昭苏县| 双城市| 东丽区| 什邡市| 惠安县| 衡水市| 南部县| 满城县| 南江县| 达州市| 平和县| 孝义市| 外汇| 伊春市| 兰考县|