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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

確保所有的非空(Non-NULL)值都是唯一的

2024-07-21 02:10:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
注冊(cè)會(huì)員,創(chuàng)建你的web開(kāi)發(fā)資料庫(kù),

問(wèn):我的sql server表的一列允許null值。我希望在其值為非null時(shí),該列是唯一的。怎樣才能以編程的方式實(shí)現(xiàn)這一行為?如果在該列上設(shè)置一個(gè)unique 約束,我只能包含一個(gè)值為null的記錄。我正在使用觸發(fā)器實(shí)現(xiàn)這一約束,您可以推薦一個(gè)更簡(jiǎn)單的方法以保證所有的非null值唯一嗎?

答:sql server沒(méi)有實(shí)現(xiàn)非null值唯一性的內(nèi)建機(jī)制,因此您需要通過(guò)自定義的check約束來(lái)實(shí)現(xiàn)這一機(jī)制。例如,以下一段編碼實(shí)現(xiàn)了您所需要的功能:

use tempdb
create table t1 (c1 int null, c2 char(5) null)
create trigger mytrigger on t1 for insert, update as
begin
       if (select max(cnt) from (select count(i.c1)
as cnt from t1, inserted i where t1.c1=i.c1 group
by i.c1) x) > 1
       rollback tran
end

在sql server 2000中,您還可以使用instead of觸發(fā)器來(lái)實(shí)現(xiàn)這一功能。有關(guān)instead of觸發(fā)器的詳細(xì)信息,請(qǐng)參閱以下文章。如需訪問(wèn)這些文章,請(qǐng)?jiān)L問(wèn)sql server 雜志網(wǎng)站,在instantdoc框中輸入instantdoc號(hào),然后點(diǎn)擊go。相關(guān)文章如下:

tricks with instead of triggers; instantdoc number 15828
instead of triggers on views; instantdoc number 15791
instead of triggers; instantdoc number 15524

—sql server mvps

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 株洲县| 微博| 大宁县| 颍上县| 赣榆县| 桂平市| 霍林郭勒市| 兴海县| 凌云县| 武夷山市| 合川市| 肇庆市| 仁化县| 屏山县| 伊春市| 贵南县| 车致| 福州市| 军事| 溆浦县| 桐梓县| 南京市| 汪清县| 水富县| 武邑县| 河南省| 勃利县| 鄢陵县| 澳门| 年辖:市辖区| 涞源县| 恩施市| 武汉市| 朝阳县| 景谷| 长垣县| 右玉县| 商河县| 百色市| 崇义县| 阿勒泰市|