ibm db2 - 通过添加新列来更新索引

时间:2017-12-20 18:08:00

标签: sql db2

我的索引创建如下:

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

那么为什么会出错呢?我错过了什么?

1 个答案:

答案 0 :(得分:0)

更改表以删除约束时,不会出现错误。

代替: db2“ ALTER TABLE DROP主键” 采用: db2“ ALTER TABLE DROP CONSTRAINT”