※ 引述《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)