我继承了一个启用了“唯一 auto_identity index”选项的 Sybase 数据库。作为升级过程的一部分,我需要在这个数据库中的表中添加一些额外的列,即
alter table mytable add <newcol> float default -1 not null
当我尝试这样做时,我收到以下错误:
Column names in each table must be unique, column name SYB_IDENTITY_COL in table #syb__altab....... is specifed more than once
是否可以在启用此属性的情况下向表中添加列?
更新1:
我创建了以下复制问题的测试:
use master
sp_dboption 'esmdb', 'unique auto_identity indexoption',true
use esmdb
create table test_unique_ids (test_col char)
alter table test_unique_ids add new_col float default -1 not null
此处的 alter table 命令会产生错误。(已在 ASE 15/Solaris 和 15.5/Windows 上尝试过)
更新 2:
这是 Sybase dbisql界面中的一个错误,客户端工具 Sybase Central 和 Interactive SQL 使用该界面访问数据库,并且它似乎只影响启用了“唯一 auto_identity index”选项的表。
要解决此问题,请使用不同的 SQL 客户端(例如通过 JDBC)连接到数据库或在命令行上使用isql 。