繁体   English   中英

SQL错误-无法添加外键约束

[英]SQL error - Cannot add foreign key constraint

我正在尝试使用Java(jdbc)在数据库中创建一些表。 我下面得到的“代码”只有两个字符串,每个字符串包含一个SQL CREATE TABLE更新,一个用于表“ store_sales”,一个用于表“ store_returns”
java.sql.SQLException:无法添加外键约束

当我尝试将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)"
        + ")"

您不能在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)

应该管用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM