2

私はapache derby jdbc(netbeans 7.2.1)で作業しています複合主キーを持つテーブルを作成したい(これらの4つの列の値の構成のみが一意であり、それらのそれぞれの値は個別に一意ではありません)

Create table MovieScreens(
NameM  varchar(255) NOT NULL UNIQUE,
DateS DATE NOT NULL UNIQUE,
Hall NUMERIC NOT NULL  UNIQUE,
HourS NUMERIC  NOT NULL  UNIQUE,
SEATSFREE  varchar (500) NOT NULL,
FOREIGN KEY (Hall) REFERENCES Halls(Hall),
FOREIGN KEY (NameM) REFERENCES MoviesDetails(NAMEM),
**primary key (NameM , DateS,Hall,HourS)**
)

しかし、主キーとして定義された各列はそれ自体が主キーであり、複合キーの一部ではないようです。これらの値の 1 つだけが異なる行を挿入しようとすると、エラーが発生します。

Error code -1, SQL state 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index .

私が理解しているように、netbeans は MySQL データベースを使用しており、これは MySQL の正しい構文である必要があります。それとも間違っていますか?

任意の入力をいただければ幸いです、ありがとう!

4

1 に答える 1

5

主キーを構成するフィールドを設定して、各フィールドUNIQUEが同じ値を 2 回持つことができないようにします。この制約を取り除き、主キーの宣言だけを残してください。

ちなみに、あなたの問題は純粋な SQL にのみ関連しています。JDBC を使用しても、これには影響しません。

于 2013-09-25T06:18:35.697 に答える