2014-10-21 3 views
1

java (jdbc)를 사용하여 데이터베이스에 테이블을 만들려고합니다. 아래의 "코드"는 각각 SQL CREATE TABLE 업데이트를 포함하는 두 개의 문자열이며 "store_sales"테이블과 "store_returns"테이블에 대한 것입니다java.sql.SQLException : 외래 키 제약 조건을 추가 할 수 없습니다 내가SQL 오류 - 외래 키 제약 조건을 추가 할 수 없습니다.

어떤 아이디어은 "코드"의 마지막 줄에 store_returns.sr_ticket_number 외래 키 참조하는 store_sales.ss_ticket_number를 만들려고 할 때 발생

? 미리 감사드립니다.

"CREATE TABLE IF NOT EXISTS store_sales (" 
     + "ss_sold_date_sk int," 
     + "ss_sold_time_sk int," 
     + "ss_item_sk int not null," 
     + "ss_customer_sk int," 
     + "ss_cdemo_sk int," 
     + "ss_hdemo_sk int," 
     + "ss_addr_sk int," 
     + "ss_store_sk int," 
     + "ss_promo_sk int," 
     + "ss_ticket_number int not null," 
     + "primary key (ss_item_sk,ss_ticket_number)," 
     + "foreign key (ss_sold_date_sk) references date_dim (d_date_sk)," 
     + "foreign key (ss_sold_time_sk) references time_dim (t_time_sk)," 
     + "foreign key (ss_item_sk) references item (i_item_sk)," 
     + "foreign key (ss_customer_sk) references customer (c_customer_sk)," 
     + "foreign key (ss_cdemo_sk) references customer_demographics (cd_demo_sk)," 
     + "foreign key (ss_hdemo_sk) references household_demographics (hd_demo_sk)," 
     + "foreign key (ss_addr_sk) references customer_address (ca_address_sk)," 
     + "foreign key (ss_store_sk) references store (s_store_sk)," 
     + "foreign key (ss_promo_sk) references promotion (p_promo_sk)" 
     + ")" 

     , 

     "CREATE TABLE IF NOT EXISTS store_returns (" 
     + "sr_return_date_sk int," 
     + "sr_return_time_sk int," 
     + "sr_item_sk int not null," 
     + "sr_customer_sk int," 
     + "sr_cdemo_sk int," 
     + "sr_hdemo_sk int," 
     + "sr_addr_sk int," 
     + "sr_store_sk int," 
     + "sr_reason_sk int," 
     + "sr_ticket_number int not null," 
     + "primary key (sr_item_sk,sr_ticket_number)," 
     + "foreign key (sr_return_date_sk) references date_dim (d_date_sk)," 
     + "foreign key (sr_return_time_sk) references time_dim (t_time_sk)," 
     + "foreign key (sr_item_sk) references item (i_item_sk)," 
     + "foreign key (sr_customer_sk) references customer (c_customer_sk)," 
     + "foreign key (sr_cdemo_sk) references customer_demographics (cd_demo_sk)," 
     + "foreign key (sr_hdemo_sk) references household_demographics (hd_demo_sk)," 
     + "foreign key (sr_addr_sk) references customer_address (ca_address_sk)," 
     + "foreign key (sr_store_sk) references store (s_store_sk)," 
     + "foreign key (sr_reason_sk) references reason (r_reason_sk)," 
     + "foreign key (sr_ticket_number) references store_sales (ss_ticket_number)" 
     + ")" 

답변

4

당신은 store_sales에서 (ss_item_sk, ss_ticket_number)와 같은 결합 된 외래 키의 일부에 외래 키 제약 조건을 추가 할 수 없습니다. 외래 키 제약 조건의 경우 참조 된 테이블의 기본 키의 모든 부분을 처리해야합니다.

뭔가

foreign key (sr_item_sk, sr_ticket_number) references store_sales (ss_item_sk,ss_ticket_number) 

같은 슈퍼 소닉 응답 만

+0

감사를 작동합니다! 미안, 나는 여기 초보자이고 나는 upvote 할 수 없다 (나는 15 평판이 필요하다) – Christos14

관련 문제