sql怎么直接添加check約束 SQL語(yǔ)句怎么設(shè)置性別只為男或女?
SQL語(yǔ)句怎么設(shè)置性別只為男或女?樓上說(shuō)的答非所問(wèn)啊,人家是建表,你給個(gè)網(wǎng)站查詢出諸如成立個(gè)學(xué)生表,里邊包括,學(xué)號(hào),姓名,性別,其他字段略createtable學(xué)生表(學(xué)號(hào)char(5)cannotn
SQL語(yǔ)句怎么設(shè)置性別只為男或女?
樓上說(shuō)的答非所問(wèn)啊,人家是建表,你給個(gè)網(wǎng)站查詢出
諸如成立個(gè)學(xué)生表,里邊包括,學(xué)號(hào),姓名,性別,其他字段略
createtable學(xué)生表(
學(xué)號(hào)char(5)cannotnullprimarykey,
姓名varchar(10)cannotnull,
性別char(2)default男check(性別outside(男,女))
)
其中default男應(yīng)該是設(shè)置為男
check(性別of(男,女)那就是性別只這個(gè)可以為男或女
SQLserver中有哪幾種觸發(fā)器?
觸發(fā)器的概念及作用
觸發(fā)器是一種特殊類(lèi)型的存儲(chǔ)過(guò)程,它不同于我們前面可以介紹過(guò)的存儲(chǔ)過(guò)程。觸發(fā)器通常是通過(guò)事件接受可以觸發(fā)而被想執(zhí)行的,而存儲(chǔ)過(guò)程可以實(shí)際存儲(chǔ)過(guò)程名字而被真接內(nèi)部函數(shù)。當(dāng)對(duì)某一表并且不下于notification、INSERT、DELETE這些操作時(shí),SQL Server都會(huì)手動(dòng)想執(zhí)行觸發(fā)器所定義的SQL語(yǔ)句,使確保全對(duì)數(shù)據(jù)的處理可以符合國(guó)家規(guī)定由這些SQL語(yǔ)句所符號(hào)表示的規(guī)則。
觸發(fā)器的要注意作用那就是其能夠?qū)崿F(xiàn)程序由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性。之外,觸發(fā)器還有一個(gè)其它許多完全不同的功能:
(1)付魔約束(Enforcerestriction)
觸發(fā)器還能夠?qū)崿F(xiàn)方法比CHECK語(yǔ)句無(wú)比急切的約束。
(2)跟蹤變化Auditingchanges
觸發(fā)器可以不監(jiān)視系統(tǒng)數(shù)據(jù)庫(kù)內(nèi)的操作,進(jìn)而不不能數(shù)據(jù)庫(kù)中未經(jīng)授權(quán)的指定你更新和變化。
(3)級(jí)聯(lián)運(yùn)行(Cascadedoperation)。
觸發(fā)器也可以探測(cè)系統(tǒng)數(shù)據(jù)庫(kù)內(nèi)的操作,并自動(dòng)出現(xiàn)地拓?fù)浣Y(jié)構(gòu)影響大整個(gè)數(shù)據(jù)庫(kù)的各項(xiàng)內(nèi)容。.例如,某個(gè)表上的觸發(fā)器中包含有對(duì)另外一個(gè)表的數(shù)據(jù)操作(如刪除,更新完,插到)而該操作又倒致該表上觸發(fā)器被觸發(fā)。
(4)存儲(chǔ)過(guò)程的動(dòng)態(tài)創(chuàng)建(Storedprocedureinvocation)。
就是為了響應(yīng)數(shù)據(jù)庫(kù)可以更新觸,發(fā)器可以不全局函數(shù)一個(gè)或多個(gè)存儲(chǔ)過(guò)程,哪怕可以不是從外部過(guò)程的調(diào)用而在DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))本身之外參與操作。
足以證明,觸發(fā)器可以不可以解決中級(jí)形式的業(yè)務(wù)規(guī)則或復(fù)雜行為取消以及利用訂制記錄等一些方面的問(wèn)題?;蛘撸|發(fā)器能看出某一表在數(shù)據(jù)直接修改前后狀態(tài)不可能發(fā)生的差異,并參照這種差異不能執(zhí)行當(dāng)然的處理。至于一個(gè)表的同一類(lèi)型(INSERT、update、DELETE)的多個(gè)觸發(fā)器能夠?qū)ν环N數(shù)據(jù)你操作采取什么措施功能不同完全不同的處理。
總體而言,觸發(fā)器性能常見(jiàn)比較低。當(dāng)運(yùn)行觸發(fā)器時(shí),系統(tǒng)如何處理的大部分時(shí)間花費(fèi)在具體參考其它表的這一處理上,畢竟這些表既是在內(nèi)存中也還在數(shù)據(jù)庫(kù)設(shè)備上,而刪除掉表和插入表時(shí)總位處內(nèi)存中。要知道觸發(fā)器所參照的其它表的位置做出決定了操作要最少的時(shí)間長(zhǎng)短。
觸發(fā)器的種類(lèi)
SQL Server2000支持什么兩種類(lèi)型的觸發(fā)器:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。其中AFTER觸發(fā)器即為SQL Server2000版本以前所介紹的觸發(fā)器。該類(lèi)型觸發(fā)器那些要求只有執(zhí)行某一操作(INSERT UPDATE DELETE)之后,觸發(fā)器才被觸發(fā),且不能在表上定義。也可以為是對(duì)表的同一操作定義多個(gè)觸發(fā)器。相對(duì)于AFTER觸發(fā)器,可以不定義哪一個(gè)觸發(fā)器被反應(yīng)最快不觸發(fā),哪個(gè)被最后能觸發(fā),大多使用系統(tǒng)過(guò)程sp_settriggerorder來(lái)能完成此任務(wù)。
INSTEAD OF觸發(fā)器意思是根本不想執(zhí)行其所定義的操作(INSERT、update、DELETE),而僅是想執(zhí)行rs觸發(fā)器本身。既可在表上定義,定義INSTEAD OF觸發(fā)器,也可以不在視圖上符號(hào)表示INSTEAD OF觸發(fā)器,但對(duì)同一操作只能定義一個(gè)INSTEAD OF觸發(fā)器。