2016-07-28 5 views
-2

DB2-docType列とtitle列の2つの列に一意制約を追加しようとしています。各列の値はそれ自身で繰り返すことができます。ただし、(docType,title)のペアの値を繰り返してはいけません。複数の列に対するDB2固有の制約

私はこれまで

ALTER TABLE externalfiles 
ADD CONSTRAINT logicalKey UNIQUE (doctype, title) 

alter table externalfiles add unique (doctype, title) 

を試みたが、両方に、次のエラーを得た: "テーブルの上に理由コード "7" のために許可されていない

操作PIT.EXTERNALFILES ".. SQLCODE = -668、SQLSTATE = 57016、DRIVER = 4.21.29

これは許可されていませんか?

DB2 Unique Constraint over multiple Columnsは、これに代わるものとしてインデックスを作成することを提案しています。まだインデックスを作成しようとしなかったのですが、ユニークな制約が機能していないのはなぜかと思います。

TIA。

+1

マニュアルでエラーコードを調べてみましたか? – mustaccio

答えて

0

このweb search on db2 luw sqlstate 57016は、以前のALTERでは、ADD CONSTRAINTを実行する前にREORGを実行する必要があることを示唆するリンクを返します。

おそらく最も注目すべきは、RC7を説明するテキストの次のdocリンクとスニペット[明らかにSQLERRMC = 7であった:表•

DB2 for Linux UNIX and Windows 9.7.0 ->Database fundamentals ->Messages ->SQL Messages ->SQL0500 - SQL0999 ->SQL0668N

... 7はREORG保留状態になっています。これは、REORGが推奨する操作を含む のALTER TABLEステートメントの後に発生します。 ...

関連する問題