首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从日期开始更改列以接受systimestamp

从日期开始更改列以接受systimestamp
EN

Stack Overflow用户
提问于 2015-08-13 10:10:41
回答 1查看 1.1K关注 0票数 1

目前,我有一个用sysdate更新日期字段的触发器,不幸的是,如果更新发生在同一秒钟内,这有时并不是唯一的。是否可以将列更改为使用systimestamp,使其使用毫秒,并且始终是唯一的。

triger看起来是这样的:

代码语言:javascript
复制
BEGIN
IF INSERTING or :old.STATUS_FLAG <> :new.STATUS_FLAG THEN
INSERT INTO T_SCHEME_STATUS_HISTORY
  (SCHEME_ID, STATUS_FLAG, DATE_STATUS_CHANGED, AUDIT_CREDENTIALS, AUDIT_DTM)
VALUES
  (:new.SCHEME_ID, :new.STATUS_FLAG, sysdate, :new.AUDIT_CREDENTIALS, SYSDATE);
END IF;  
END;

我想将DATE_STATUS CHANGED更改为使用systimestamp,所以它总是unqiue,但是它正在更新的列是DATE(7)类型的,因此它不适合。

是否有一种改变表以接受systimestamp的方法?如果你需要更多的信息,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 12:10:36

@Boneist关于不使用时间值作为键的评论是值得注意的。但是,如果你有绝对的决心去做这件事-是的,当然,这是可以做到的:

代码语言:javascript
复制
ALTER TABLE WHATEVER
  MODIFY (SOME_DATE_FIELD TIMESTAMP(6));

这将数据类型更改为时间戳(6),精确到每秒1/1,000,000,000。希望这将满足您的要求,但真正的日期/时间字段不应该被用作唯一的键。

祝你好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31985306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档