'uniqueauto_identityindex'オプションが有効になっている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
ここでaltertableコマンドを実行すると、エラーが発生します。(ASE 15/Solarisおよび15.5/Windowsでこれを試しました)
アップデート2:
これはSybasedbisqlインターフェイスのバグであり、SybaseCentralおよびInteractiveSQLがデータベースにアクセスするために使用するクライアントツールであり、「uniqueauto_identityindex」オプションが有効になっているテーブルにのみ影響するようです。
この問題を回避するには、別のSQLクライアント(たとえば、JDBC経由)を使用してデータベースに接続するか、コマンドラインでisqlを使用します。