討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
這樣的unique判斷如何做?
更改我的閱讀文章字型大小
作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 07:55:35
我有一個webform讓user輸入10個不同類型的serial number.這些serial number 都會存到一個table裡.
有個條件是每個存入的serial number都必須是唯一不可重複的, 請問要如何做到這點且不會影響程式執行效能?
作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 08:57:16
忘了說,這10個不同類型的serial number會存入10個欄位裡.
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 09:12:09
建議改成十筆紀錄...而非欄位...
這樣可以用unique index或者primary key來阻擋重複...

程式阻擋雖然也是可以辦得到...但是我的經驗是利用程式阻擋會有漏洞..
很容易在多人操作的情況下..同時寫入重複紀錄..
作者 : pantc328(好說) C#優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 894 | 人氣 14154 | 評價 3400 | 評價/貼文 3.8 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 09:27:57
把這十個欄位設成Primary key 就OK 了
作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 10:01:49
所以如果我的設計是 A (primary key)對10 B (B1~B10), 為了做到 A和B1~10都是unique. 我可以別外開個table,只處理A和B的關係.

table1
------
column1 column2 column3 -----columnN
A x y N
B x y N
C x y N

其中column2設成PK

table2
-------
column1 column2
A B1
A B2
A B3
' '
' '
' '

其中column2設成PK

或者我把 table2 裡的 column2 放在 table1 並將其設為unique即可?
作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 10:08:15
所以如果我的設計是 A (primary key)對10 B (B1~B10), 為了做到 A和B1~10都是unique. 我可以別外開個table,只處理A和B的關係.

table1
------
column1 column2 column3 -----columnN
A x y N
B x y N
C x y N

其中column2設成PK

table2
-------
column1 column2
A B1
A B2
A B3
' '
' '
' '

其中column2設成PK

或者我把 table2 裡的 column2 放在 table1 並將其設為unique即可?
作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 上午 10:25:46
看來我也並不需要拆開成2個table
UNIQUE Constraints
You can use UNIQUE constraints to ensure that no duplicate values are entered in specific columns that do not participate in a primary key. Although both a UNIQUE constraint and a PRIMARY KEY constraint enforce uniqueness, use a UNIQUE constraint instead of a PRIMARY KEY constraint when you want to enforce the uniqueness of:

A column, or combination of columns, that is not the primary key.
Multiple UNIQUE constraints can be defined on a table, whereas only one PRIMARY KEY constraint can be defined on a table.

A column that allows null values.
UNIQUE constraints can be defined on columns that allow null values, whereas PRIMARY KEY constraints can be defined only on columns that do not allow null values.

A UNIQUE constraint can also be referenced by a FOREIGN KEY constraint.
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 下午 12:44:32
我想發文者希望的是,除了那十個欄位的值不要重覆之餘,也不希望跟以往的十個欄位值重覆...

請問一下如果沒把他們放到同一個欄位,而把它設成primary key或者unique index有用嗎???
column1 column2兩個值都是123可以被限制掉嗎???見鬼了而且還要跟以往的紀錄比對...

所以應該是發文者後來提出來的做法有用...不過..這樣的話table1還要用來幹嘛!???
你直接留下一個table2不就好了嗎??這樣功能也可以達到..程式也不用多一道手續呀!!



作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 下午 01:12:41

>我想發文者希望的是,除了那十個欄位的值不要重覆之餘,也不希望跟以往的十個欄位值重覆...
這正是我想的.
>
>請問一下如果沒把他們放到同一個欄位,而把它設成primary key或者unique index有用嗎???
>column1 column2兩個值都是123可以被限制掉嗎???見鬼了而且還要跟以往的紀錄比對...
>
>所以應該是發文者後來提出來的做法有用...不過..這樣的話table1還要用來幹嘛!???
>你直接留下一個table2不就好了嗎??這樣功能也可以達到..程式也不用多一道手續呀!!

table 1是巳經存在的 (master table), 想到用table2是因為新功能需求(記錄並過濾重複值,即那10個serial number,不想把table 1搞亂, 所以想用table2 來做). 而且這只是其中之一,我需要另外用欄位來記錄各個serial number 的長度,開頭格式(如長度為10,開頭為sn.... snxxxxxxxx)

table 2 應該會長成這樣.

table2 (tblchildlabel)
-----------------------------------------------------------------------------
column1 column2 column3 prefix length reqpack reqvisibility status
  A B1 type1
  A B2 type2
  A B3 type3
  
其中 column1 是 foreign key , column2 和 column3 我想會設成 primary key或unique.

如果 column2 和 column3 設成 unique, 當violation 發生時,是否有傳回值 (如primary key 會傳回 2627代碼,表示 duplicate value found)?

另外一個方式是將column2出現的值都換成以column來表示,並把每個column各別設上unique (table 裡是可以有多個unique column 的). 只是必須預先定好column數,而且會很多.
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 下午 02:43:39
等等....是我錯了嗎??
把column2 和 column3 設成 unique
column2 的值是可以跟column3重複的唷

column2 column3
   123 123

這樣是可以成立的...情問一下...還是在下駑鈍..應該怎麼加限制式..可以讓它們被限制掉

column2 column3
   123 111
   111 123

還有這種可能...請問一下...不把它們編在同一個欄位怎麼用unique去阻擋..教一下
作者 : raysunning(raysunning)
[ 貼文 24 | 人氣 2571 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 下午 03:55:20

>等等....是我錯了嗎??
>把column2 和 column3 設成 unique
>column2 的值是可以跟column3重複的唷
>
>column2 column3
> 123 123
>
>這樣是可以成立的...情問一下...還是在下駑鈍..應該怎麼加限制式..可以讓它們被限制掉
>
>column2 column3
> 123 111
> 111 123
>
>還有這種可能...請問一下...不把它們編在同一個欄位怎麼用unique去阻擋..教一下

我的設計只需要令 (column2,column3) unique就好了,其實只要column2 做到unique也很夠了.col3是類別,col2是類別值
    
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 下午 04:26:19
@@|||呵呵你的問題我很清楚...所以我懂你的意思

我是在問之前的發文者
在你的Table1中怎麼檢查讓不同欄位的值不重複...
例如我們把十個欄位縮小成兩個欄位來看的話...
作者 : hontony(Tony)
[ 貼文 121 | 人氣 2888 | 評價 320 | 評價/貼文 2.64 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/5 下午 04:28:34
小台兄:

放棄啦! 他本人做到就行啦!

多口仔 Tony
^^

 板主 : 徵求中
 > SQL Server 7/2000 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - SQL Server 7/2000 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
SQL Server 7/2000
1 小朱 1540 
2 小台 1520 
3 Gordon 600 
4 ㄉ一ˊㄎㄜˋ 580 
5 路人 490 
6 max 470 
7 william 410 
8 Aries 250 
9 阿利 180 
10 羅啟章 160 
SQL Server 7/2000
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625