Sybase - 更改IDENTITY列上的表列数据类型,该列是用户定义的数据类型

时间:2011-10-26 17:58:07

标签: database performance sybase

我对甲骨文非常了解,但我一直在努力找到一个解决我遇到的问题的合适解决方案。

我有一个具有IDENTITY列的表,该列也是用户定义的数据类型(UDD)“id”,它是数字(10,0)。我已经决定用本机数据类型替换UDD,但是当我这样做时出现错误。

我发现这样做的唯一方法是:

  • 使用过程sp_rename重命名原始表(table_a到table_a_backup)
  • 重新创建原始表(table_a),但使用本机数据类型
  • 将备份表的内容复制到原始内容(即插入table_a select * from table_b)

但这有效,但我有超过10M的记录,它最终耗尽了日志段并停止了(由于物理要求,我不能再增加该段)。

是否有人有解决方案,最好不是一个解决方案,将记录处理为除一个大集之外的其他任何内容?

干杯,

JLove

1 个答案:

答案 0 :(得分:0)

从概念上讲,类似这样的东西(在Sybase ASE 12.5.x中)......

  1. 在您当前的ID列上执行“alter table drop column”
  2. 执行“alter table add column”stmt以添加具有IDENTITY属性的新列(w / native数据类型)
  3. 注意 ID字段可能没有相同的数字,因此如果将ID字段用作其他表的显式或隐式键,请务必小心执行上述操作。