Re: [SQL ] 欄位A AND 欄位B 不得重複

作者: LaPass (LaPass)   2014-11-24 11:05:05
※ 引述《brocker (別問我居士)》之銘言:
: 資料庫名稱:MSSQL
: 資料庫版本:2012
: 想請問一下大大們,我今天有一個資料表,要新增內容進去,裡面有兩個欄位,欄位A和欄位B
: 欄位A的資料內容可以重複
: 欄位B的資料內容也可以重複
: 但是欄位A和欄位B的內容 新增下一筆時不能跟這兩欄同時一樣
: 也就是說欄位A(姓名)有一筆叫王小明 欄位B(打卡日期)是2014/9/9
: 姓名或是欄位單獨的時候可以重複
: 但是一起的時候不能重複
: 請問一下這樣條件約束(Constraint)要怎麼設定,謝謝!
ALTER TABLE `表名稱` ADD UNIQUE `索引名稱` ( `A` , `B` );
A可重複
B也可重複
但是A跟B同時重複的時候,就會跟你講說已經有這個索引,塞不進去
還有我記得主鍵也可以同時設定在兩個欄位上
運作方式同上,會把兩個欄位一起判斷
作者: BigLoser (大魯蛇)   2014-11-24 12:00:00
請問,A:小明 B:NUL 加入這樣的資料兩筆,加的進去嗎?我把來也是想說把兩個加起來設成為一值就好了可是我上面說的A欄位有值B欄位NULL如果已經有一筆這樣的資料,第二筆在進去的時候應該會失敗吧,這樣應該就不符合原PO條件
作者: LaPass (LaPass)   2014-11-24 13:26:00
應該不能加沒錯,不過不是說不允許A、B都一樣的狀況嗎?那當然包跨NULL
作者: BigLoser (大魯蛇)   2014-11-24 14:29:00
因為我看到原問題有一個"姓名或是欄位單獨的時候可以重複",我還以為她希望可以有兩筆小明,而沒有日期或許我太執著於這一點的,應該先釐清原問題那這個解法應該就沒問題,那我可以延伸這題請教一下如果是可以有兩筆 小明, NULL這種狀況該怎麼解?
作者: LaPass (LaPass)   2014-11-24 14:53:00
應該也只能在insert之前下判斷式了吧或是你講的trigger
作者: BigLoser (大魯蛇)   2014-11-24 15:00:00
嗯..也就是約束條件做不到嗎? 因為我不知道怎麼做只好用trigger

Links booklink

Contact Us: admin [ a t ] ucptt.com