【问题标题】:How to alter Image column on Sybase to NOT NULL如何将 Sybase 上的 Image 列更改为 NOT NULL
【发布时间】:2015-02-17 04:10:42
【问题描述】:

在 Sybase ASE 15.7 数据库上,我正在尝试将列类型 ImageNULL 修改为 NOT NULL(我使用的是 SQSH,所以 ; 是一个有效的终止符):

create table LOB_TEST (XML image NULL);
alter table LOB_TEST modify XML image NOT NULL;

错误信息:

Msg 13907, Level 16, State 1
Server 'MYSERVER', Line 1
ALTER TABLE 'LOB_TEST' failed. You cannot modify column 'XML' to TEXT/IMAGE/UNITEXT  type.

这适用于 int 类型的列:

create table NON_LOB_TEST (XML_ID int NULL);
alter table NON_LOB_TEST modify XML_ID int NOT NULL;
(0 rows affected)

任何线索为什么?我在网上找不到任何东西。谢谢。

【问题讨论】:

  • 我已经试过了,花了大约 1 个小时……没办法。是否不可能重新创建定义一些 default value 到您的 image 列的表?
  • 我在 ASE 16 中看到了同样的行为
  • 重点是不重新创建表;我发布的是一个复制问题的简化示例,但原始表有 467M 行。是的,这可以通过使用select into 或任何其他允许复制/重新创建数据的方式来完成。非常感谢!

标签: sybase


【解决方案1】:

文本/图像数据类型在内部与其他数据类型非常不同,因为它们的存储方式不同。因此,适用于 INT 列的操作不适用于 text/image 列也就不足为奇了。

文档在这一点上不是很清楚,但隐含地说你不能修改文本/图像列的可空性:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36272.1600/doc/html/san1393050903443.html

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 2016-06-15
    • 2015-08-26
    • 2012-01-29
    • 2010-10-15
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多