Re: [SQL ] 一些關於SQL Server的問題
※ 引述《Gosyujinsama (御主人樣)》之銘言:
: ※ 引述《Gosyujinsama (御主人樣)》之銘言:
: : 推 jameswiki:看不懂問題,你自動編號是要做PK的嗎?若是,別學access用 03/16 01:38
: : 推 jameswiki:別學access的用法:自動編號當PK 03/16 01:41
: 看來我的問題有點言不及意 orz
: 我是要問說,我現在要建立一個新資料表,
: 然後這個資料表的某些欄位有以下的要求。
: 1. 某個要自動編號的設PK
: (這個問題好像跟下面不太一樣,
: 是直接設int然後PK就好?)
關於第一點,除非必要,不然不要用自動編號,
建議你用二個欄位處理,第一個欄位,用Uni形態,預設值使用
newid()函數, 第二個欄位,用date 型態,預設值用getdate()型態,
newid()可以產生36位元唯一識別碼,用來當PK, 第二個欄位則存入insert時間
如果你需要編號,則自己再弄一個第三欄位,由使用者可以動態編輯
這個編號欄位,讓使用者或程式自己去訂編號即可,也就是把編號跟PK鍵拆開,
日後user要改變編號型態:如原本為0001-->改成依部門分MIS-001,Sales-001
,都不會影響到你PK參考值,而必需重寫
: 2. 某個欄位要>=1
這個看不懂要做什麼的
: 3. 某個日期欄位強制在當天以前
這個看不懂,但可由程式控制
: 4. 某個欄位不能超過某個值
這個也可由程式控制,或寫成Trigger,但是在程式插入前或update資料前
來做檢查,若有錯誤提示user會比做Trigger好一點
: 所以SQL Server應該有一個指令能夠在建立資料表時,
: 設定範圍等等的東西,我要問的是那個指令是什麼,
若是要建立資料表,先設資料範圍,可參考Create Table指令
※ 編輯: jameswiki 來自: 220.134.154.61 (03/16 18:51)
討論串 (同標題文章)