我的索引创建如下:
db2 "CREATE UNIQUE INDEX <index_name> ON <table_name> (col_name1 ASC) COMPRESS YES ALLOW REVERSE SCANS"
db2 "alter table <table_name> add constraint <constraint_name> PRIMARY KEY (col_name1)"
我现在需要添加一个新列并将其添加到键中。 这是我的工作:
db2 "ALTER TABLE <table_name> ADD COLUMN col_name2 integer not null default 0"
db2 "ALTER TABLE <table_name> DROP PRIMARY KEY" -- removes the primary key and the generated constraint
db2 "DROP INDEX <index_name>" -- removes the unique index
db2 "CREATE INDEX <index_name> ON <table_name> (col_name1 ASC, col_name2) COMPRESS YES ALLOW REVERSE SCANS"
db2 "ALTER TABLE <table_name> ADD CONSTRAINT <constaint_name> PRIMARY KEY (col_name1,col_name2)"
会发生什么 -
我认为它会创建正确的索引。
db2 describe indexes for table <table_name>
显示一个索引,其中rule_tupe为P,列数为2。 但db2控制台失败并显示错误:
SQL0598W Existing index "index_name" is used as the index for
the primary key or a unique key. SQLSTATE=01550
那么为什么会出错呢?我错过了什么?
答案 0 :(得分:0)
更改表以删除约束时,不会出现错误。
代替: db2“ ALTER TABLE DROP主键” 采用: db2“ ALTER TABLE DROP CONSTRAINT”