作者flakchen (flak)
看板Database
标题Re: [SQL ] SQL SERVER 2005 新增修改时间的问题
时间Tue Jul 10 12:04:34 2007
※ 引述《taikobo (有比扯铃扯吗?)》之铭言:
: 但的确可以在每次UPDATE时,依照判断条件ID去更新我的UPDATE_DATE的时间
: 不过用了以後发现这个东西...只是把判断程式写在SQL Server上
: 感觉跟写程式UPDATE时把UPDATE_DATE栏位带入GETDATE()是同一个意思吧?
所以...我後来也都直接在更新式子里面写 ^^|||
这样有一个好处,是我会顺便把更新者的UserID写到资料行中
可以知道最後一次的更改者是谁
写Trigger也是有好处啦,至少你不用担心每一支程式有没有忘记更新时间
Trigger主要的缺点是锁定程度太强,资料量大时很容易把相关资料表都锁死
所以我不喜欢用。不过如果你的资料表不是几十万笔以上的话,大概不用
考虑这点
: 其中的差别只是写在SQL Server上还是程式里而已...@@
: 另外感谢grence兄提供方法,可惜在下资质驽钝
: 我实在看不懂...惭愧;但还是感谢你的帮助^^
他的作法是建立栏位时,把资料型态就直接设成timestamp
这个栏位会是一个二进位资料,但每次资料行异动时,就会跟着变动
但问题是....
「SQL Server timestamp 资料类型只处理时间或日期。SQL Server timestamp 值是二
进位数字,指出资料库中发生资料修改的相对顺序。实作 timestamp 资料类型原先是
为了支援 SQL Server 复原的演算法。每次有分页被修改时,就会以目前的 @@DBTS 值
加上戳记,而 @@DBTS 会累加 1。这对复原来说已经足够判断分页修改的相对顺序,但
是 timestamp 值与时间没有关系。 」
所以这个值是相对於整个资料库的分页变动「次数」,与时间没有关系
: slalala兄说的current_timestamp我是用在建立表单的时候
: 因为我有二个栏位记录时间
: 一个是CREATION_DATE(建立时间),一个是UPDATE_DATE(更新时间)
: 建立时的属性有用到current_timestamp:
: CREATION_DATE DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
: 在建立的时候的确能精准的自动放进伺服器的系统时间
: UPDATE_DATE栏位在建立的时候当然跟CREATION_DATE栏位的资料相同
: 但是我的问题是希望在UPDATE的时候
: UPDATE_DATE能自动更新时间...可惜CURRENT_TIMESTAMP好像不行
因为这是放在Default值,所以只有Insert时会自动填入了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.75.72