互联网服务db2 9.7表字段

请教一个DB2表字段默认值的问题

本帖最后由 titanking 于 2014-6-25 01:27 编辑


DB2版本是9.7

现有以下脚本:
CREATE TABLE T_IS_INDEX_SYSTEM
(
  SYSTEM_ID      VARCHAR(50)              NOT NULL,
  SYSTEM_NAME    VARCHAR(50)              NOT NULL,
  SYSTEM_CODE    VARCHAR(50)              NOT NULL,
  DESCRIPTION    VARCHAR(1000),
  STATUS         CHAR(1)                   DEFAULT 0,
  DEPARTMENT     VARCHAR(50),
  VERSION        VARCHAR(5),
  IS_LATEST      CHAR(1)                   DEFAULT 1,
LAST_MODIFIED  VARCHAR(20)             DEFAULT to_char(current timestamp,'yyyy-mm-dd hh24:mi:ss'),
  IS_TOP         VARCHAR(1),
  SYSTEM_TYPE    VARCHAR(1)
)
IN INDGKSH;


执行时报错:
[Error Code: -104, SQL State: 42601]  DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=,'yyyy-mm-dd hh24:mi:ss';ar(current timestamp;, DRIVER=3.57.82

问题应该在  LAST_MODIFIED  VARCHAR(20)             DEFAULT to_char(current timestamp,'yyyy-mm-dd hh24:mi:ss'),


请问这样的字段默认值应该怎么写。
谢谢!
参与10

8同行回答

johnchen328johnchen328软件开发工程师宝信
顶一下!显示全部
顶一下!收起
互联网服务 · 2014-06-27
浏览1625
johnchen328johnchen328软件开发工程师宝信
问题还未解决。顶一下!显示全部
问题还未解决。
顶一下!收起
互联网服务 · 2014-06-26
浏览1577
greytigergreytiger软件开发工程师浪潮软件
好像DB2不支持把函数值作为列的默认值,如果一定要LAST_MODIFIED的类型为varchar(20),可以default ''或者像下面两个字段一样没有默认值;如果一定要有值的话,个人建议用一个触发器来控制这个字段的默认值。另外 STATUS         CHAR(1) ...显示全部
好像DB2不支持把函数值作为列的默认值,如果一定要LAST_MODIFIED的类型为varchar(20),可以default ''或者像下面两个字段一样没有默认值;如果一定要有值的话,个人建议用一个触发器来控制这个字段的默认值。
另外
STATUS         CHAR(1)                   DEFAULT '0',
IS_LATEST      CHAR(1)                   DEFAULT '1',收起
软件开发 · 2014-06-25
浏览1580
johnchen328johnchen328软件开发工程师宝信
回复 5# wangyax    如果LAST_MODIFIED的类型必须是  VARCHAR(20)的话,有没有办法? 显示全部
回复 5# wangyax


   如果LAST_MODIFIED的类型必须是  VARCHAR(20)的话,有没有办法? 收起
互联网服务 · 2014-06-25
浏览1615
wangyaxwangyax软件开发工程师金融机构
current timestamp不能在generated里面用。你要用的话,将LAST_MODIFIED  改为 timestamp default current timestamp显示全部
current timestamp不能在generated里面用。

你要用的话,将LAST_MODIFIED  改为 timestamp default current timestamp收起
互联网服务 · 2014-06-25
浏览1608
johnchen328johnchen328软件开发工程师宝信
顶一下!期待大侠们指教!显示全部
顶一下!
期待大侠们指教!收起
互联网服务 · 2014-06-25
浏览1624
johnchen328johnchen328软件开发工程师宝信
回复 2# leo_wyn    试了:CREATE TABLE T_IS_INDEX_SYSTEM(  SYSTEM_ID      VARCHAR(50)              NOT NULL,  SYSTEM_NAME    VARCHAR(50)  ...显示全部
回复 2# leo_wyn


   试了:CREATE TABLE T_IS_INDEX_SYSTEM
(
  SYSTEM_ID      VARCHAR(50)              NOT NULL,
  SYSTEM_NAME    VARCHAR(50)              NOT NULL,
  SYSTEM_CODE    VARCHAR(50)              NOT NULL,
  DESCRIPTION    VARCHAR(1000),
  STATUS         CHAR(1)                   DEFAULT 0,
  DEPARTMENT     VARCHAR(50),
  VERSION        VARCHAR(5),
  IS_LATEST      CHAR(1)                   DEFAULT 1,
  LAST_MODIFIED  VARCHAR(20)             GENERATED  ALWAYS  AS  (to_char(current timestamp,'yyyy-mm-dd hh24:mi:ss')) ,
  IS_TOP         VARCHAR(1),
  SYSTEM_TYPE    VARCHAR(1)
)
IN INDGKSH;


还是报错:
[Error Code: -548, SQL State: 42621]  DB2 SQL Error: SQLCODE=-548, SQLSTATE=42621, SQLERRMC=current, DRIVER=3.57.82收起
互联网服务 · 2014-06-25
浏览1654
leo_wynleo_wyn商业智能工程师Security
试试 GENERATED  ALWAYS  AS  (to_char(current timestamp,'yyyy-mm-dd hh24:mi:ss'))显示全部
试试 GENERATED  ALWAYS  AS  (to_char(current timestamp,'yyyy-mm-dd hh24:mi:ss'))收起
系统集成 · 2014-06-25
浏览1581

提问者

johnchen328
软件开发工程师宝信
擅长领域: 大数据商业智能

相关问题

问题状态

  • 发布时间:2014-06-25
  • 关注会员:2 人
  • 问题浏览:15053
  • 最近回答:2014-06-27
  • X社区推广