SQL2000 'S CHECK 问题 |
尚未結案
|
dnsxc
一般會員 發表:7 回覆:13 積分:4 註冊:2004-05-22 發送簡訊給我 |
DEAR ALL:
I CREATE A TABLE,IT IS:
CREATE TABLE [dbo].[checker] (
[chk_no] [char] (4) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[chk_nm] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[oil] [bit] NULL ,
[valve] [bit] NULL ,
[kdyy] [bit] NULL ,
[ldbz] [bit] NULL ,
[fldz] [bit] NULL ,
[jdzl] [bit] NULL ,
[djzl] [bit] NULL ,
[kdzl] [bit] NULL ,
[ldsy] [bit] NULL ,
[yjbz] [bit] NULL ,
[ngyc] [bit] NULL ,
[hjz] [bit] NULL ,
[jjz] [bit] NULL ,
[qxz] [bit] NULL ,
[psz] [bit] NULL ,
[sta_dt] [smalldatetime] NOT NULL ,
[end_dt] [smalldatetime] NULL
) ON [PRIMARY] 我想建一个CHECK,使数据类型为[BIT]的所有字段中至少有一个字段值为‘TRUE’,现向高人求教。
|
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
|
dnsxc
一般會員 發表:7 回覆:13 積分:4 註冊:2004-05-22 發送簡訊給我 |
|
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
|
wscken
初階會員 發表:28 回覆:75 積分:45 註冊:2003-08-05 發送簡訊給我 |
dnsxc: huwk大大說的沒錯
我把資料表改成只有chk_no, ngyc, hjz, jjz四各欄位
只使用
ALTER TABLE CHECKER
ADD CONSTRAINT CHECKER_HAVE1 CHECK
(
(ngyc = 1)
OR (hjz =1)
OR (jjz = 1)
) 當同時寫入0時,會有錯誤訊息產生
伺服器: 訊息 547,層級 16,狀態 1,行 1
INSERT 陳述式與 TABLE CHECK 條件約束 'CHECKER_HAVE1' 發生衝突。衝突發生於資料庫 'Test',資料表 'checker'。
陳述式已經結束。 您的情況應該不是資料庫上的問題,應該是別的狀況影響的吧..
|
dnsxc
一般會員 發表:7 回覆:13 積分:4 註冊:2004-05-22 發送簡訊給我 |
|
wuabc
初階會員 發表:6 回覆:60 積分:33 註冊:2002-10-28 發送簡訊給我 |
引言: wscken: 你好!我用的是SQL SERVER 2000,不知你用的是什么数据库。我用INSERT数据时,没有错误信息跳出。我用的语句是: insert checker (chk_no,chk_nm,sta_dt) values ('ww','sfdag','2004-07-09 00:00:00') 不知为何? 谢谢你!bit的null值好像是視同1,當你不assign值時,它已經是1了, 因此,如果要得到正確結果的話,恐怕是要指定預設值了, ex: valve bit default 0 , and so on ... |
dnsxc
一般會員 發表:7 回覆:13 積分:4 註冊:2004-05-22 發送簡訊給我 |
wuabc:
谢谢你!
采用‘预设置0’是可行的。但“bit的null值好像是視同1,當你不assign值時,它已經是1了”是不可行的。若未有预设置,我希望BIT的FIELD至少有一个为0(FALSE),CHECK的内容为:VALVE=0 OR KDYY=0...。我用INSERT CHECKER (CHK_NO,CHK_NM) VALUES ('45','HKK')命令时,不会有错误信息跳出。不知哪位高人能给详解。
再次多谢! 發表人 - dnsxc 於 2004/07/16 16:24:38
|
wuabc
初階會員 發表:6 回覆:60 積分:33 註冊:2002-10-28 發送簡訊給我 |
引言: wuabc: 谢谢你! 采用‘预设置0’是可行的。但“bit的null值好像是視同1,當你不assign值時,它已經是1了”是不可行的。若未有预设置,我希望BIT的FIELD至少有一个为0(FALSE),CHECK的内容为:VALVE=0 OR KDYY=0...。我用INSERT CHECKER (CHK_NO,CHK_NM) VALUES ('45','HKK')命令时,不会有错误信息跳出。不知哪位高人能给详解。 再次多谢! 發表人 - dnsxc 於 2004/07/16 16:24:38實際測試一下,果然null值會被忽略,不過加了測試not null 值就OK了 like as: (not VALVE IS NULL and VALVE = 0) or (not KDYY IS NULL and KDYY = 0) |
dnsxc
一般會員 發表:7 回覆:13 積分:4 註冊:2004-05-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |