建立規則
下面來演示以下兩種完整性約束的操作
由於sql server2008取消了以下兩項操作的圖形介面操作,我們只能用命令建立,配合圖形介面來觀察結果了。
先建立了乙個20歲的年齡的預設值,在我們新增學生不輸入學生年齡的時候,系統自動新增預設值。
可以看到系統自動新增年齡20
我們現在再來看下面的問題,第乙個是預設值物件,注意,不是預設值,而是個物件,注意我們要先建立物件。
在我們沒有用語句建立之前,我們先來觀察一下,可以看到現在還沒有物件的存在,我們建立乙個,預設值物件為「女」的,
create
default
繫結預設值物件
sp_bindefault
解綁預設值物件
sp_unbindefault
刪除預設值物件
drop
default
create
default s***_df as
'女'--建立性別預設值物件
可以看到物件已存在,下面再來看看這個物件改怎麼用,把這個物件關聯或繫結到要用的字段,沒做之前我們觀察下,目前是空的,我們來關聯,關了,再開啟,相當於重新整理一下,
exec sp_bindefault 's***_df'
,'student.s***'
--繫結到性別列
可以看到,剛才建立的預設值物件dbo.s***_df,已經和學生性別列關聯到一起了,用的是物件繫結的方式,關聯的實際上是裡面的具體值「女」,我們再來檢驗一下,是否有作用,新增乙個學生,性別空,看看系統怎麼處理。
注意,已經能看到,系統自動填充了 女 和 20,前者是用物件關聯填充的,後者是直接填充值的,都是預設值的用法。
下面我們來刪除,不要了,可以看到不讓刪除,現在物件處於繫結狀態,也就是在用中,則不讓刪除,我們必須把關聯取消,使之不用了,才能刪除。也就是說要先解綁,再刪除!可以看到解綁後,再刪除,沒問題了。對應解綁再刪除的命令方式,見下面語句
exec sp_unbindefault 'student.s***'
--解綁
drop
default s***_df --刪除物件
以上是預設值及預設值物件的操作,兩者的區別就是乙個是具體值,乙個是具體值的物件封裝,都是預設約束的用法。
下面是另外一種,規則,使用方法和預設值物件的一樣。先建立 規則物件,再繫結,刪除前要先解綁。下面我們來看看規則的操作命令。
create
rule
繫結規則
sp_bindrule
解綁規則
sp_unbindrule
刪除規則
drop
rule
來看個例子,操作前先觀察一下。目前是空的,我們來建個新的
create
rule sno_rule
as@range
like
'2002[0-9][0-9][0-9][0-9][0-9]'
--建立學號規則
@range是個變數名稱,不是具體欄位名,在關聯繫結後則代表具體欄位了,後面的like語句代表2002開頭,後面的5位,每一位都是從0
-9,表示[0-
9],我們來建立物件。
可以看到物件了,下面我們來繫結。來檢驗一下。可以看到規則提示錯誤了,與2002開頭不符,這就是規則約束檢查的作用,可以看到按規則要求則可以新增成功!
exec sp_bindrule 'sno_rule'
,'student.sno'
--繫結到學號列
不要了,刪除前要先解綁!
exec sp_unbindrule 'student.sno'
--解綁
drop
rule sno_rule --刪除物件
刪除成功!
以上兩種約束演示結束!
約束 規則 預設值和觸發器
一 not null 指定不接受 null 值的列。二 check 約束對可以放入列中的值進行限制,以強制執行域的完整性。check 約束指定應用於列中輸入的所有值的布林 取值為 true 或 false 搜尋條件,拒絕所有不取值為 true 的值。可以為每列指定多個 check 約束。下例顯示名為...
SQL修改字段預設值方法
declare tablename varchar 30 declare fieldname varchar 50 declare sql varchar 300 set tablename dncdeta1 set fieldname description set sql select sql ...
如何用Sql更新預設值
你的建表語句 create table ff aa varchar 100 null default 1 go 修改預設值 declare s nvarchar 4000 select s alter table b.name drop constraint d.name 表名 b.name,欄位名...