DB2建表问题,急!高分相送。

贝笨33 2002-09-23 05:55:25
在DB2建表时用了用户定义的数据类型,再加上CHECK限制,就会出错。
SQL文如下:
CREATE DISTINCT TYPE SI AS CHAR(1) WITH COMPARISONS;

CREATE TABLE TEST(
COLUMN1 SI DEFAULT ' '
CHECK (COLUMN1 IN (' ', 'A', 'B')),
);
DB2报错说是IN运算符的数据类型不一致。

如果把SQL文改成:
CREATE TABLE TEST(
COLUMN1 CHAR(1) DEFAULT ' '
CHECK (COLUMN1 IN (' ', 'A', 'B')),
);
就能正常地建表了。

这是为什么?该如何解决。
...全文
45 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
luojionghui 2002-09-23
  • 打赏
  • 举报
回复
系统认为SI和char(1)是不同的数据类型,虽然实际一样。
而'a'和'b'系统认为是char(1)型。因此类型不匹配。
但SI和char(1)是可相互转换的,如下:

CREATE DISTINCT TYPE SI AS CHAR(1) WITH COMPARISONS;

CREATE TABLE TEST( COLUMN1 SI DEFAULT '' CHECK ( COLUMN1 IN (SI('A'),SI('B')) ) );

调试通过。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧