【问题标题】:I am getting this foreign key error in Java Derby database when I run the code我在运行代码时在 Java Derby 数据库中收到此外键错误
【发布时间】:2021-03-23 17:36:27
【问题描述】:

我在运行代码时在 Java Derby 数据库中收到此外键错误

CREATE TABLE PURCHASE (
    $PURCHASEID INT NOT NULL GENERATED ALWAYS AS IDENTITY,$
    $PURCHASEDATE DATE,$
    $PURCHASEQUANTITY INT,$
    $CHICPRICE DOUBLE,$
    $CUSTNIC VARCHAR(14) NOT NULL,$
    $PRIMARY KEY (PURCHASEID)$
       $ FOREIGN KEY (CUSTNIC) REFERENCES CUSTOMER(CUSTNIC)$
);

[异常,错误代码 30,000,SQLState 42X01] 语法错误:在第 8 行第 9 列遇到“FOREIGN”。 第 8 行,第 9 列

【问题讨论】:

  • PRIMARY KEY (PURCHASEID) 后面不需要逗号吗? nb不熟悉德比所以可能是错的,你需要所有的$s

标签: java sql derby


【解决方案1】:

尝试创建表,然后添加外键约束

alter table PURCHASE add FOREIGN KEY (CUSTNIC) 
REFERENCES CUSTOMER (CUSTNIC)  

FOREIGN 前面好像少了一个“,”

【讨论】:

    【解决方案2】:

    如果你在主键后面加一个逗号,它应该可以正常工作

    CREATE TABLE PURCHASE (
        $PURCHASEID INT NOT NULL GENERATED ALWAYS AS IDENTITY,$
        $PURCHASEDATE DATE,$
        $PURCHASEQUANTITY INT,$
        $CHICPRICE DOUBLE,$
        $CUSTNIC VARCHAR(14) NOT NULL,$
        $PRIMARY KEY (PURCHASEID),$
           $ FOREIGN KEY (CUSTNIC) REFERENCES CUSTOMER(CUSTNIC)$
    );
    

    【讨论】:

      【解决方案3】:

      试试这个

      CREATE TABLE PURCHASE (
          $PURCHASEID INT NOT NULL GENERATED ALWAYS AS IDENTITY,$
          $PURCHASEDATE DATE,$
          $PURCHASEQUANTITY INT,$
          $CHICPRICE DOUBLE,$
          $CUSTNIC VARCHAR(14) NOT NULL,$
          $PRIMARY KEY (PURCHASEID)$
             $FOREIGN KEY (CUSTNIC) REFERENCES CUSTOMER(CUSTNIC)$
      );
      

      【讨论】:

      • 如果你能指出你的代码和发布的代码之间的区别会有所帮助(我看不到它)
      • 区别是$和FOREIGN之间的空格
      猜你喜欢
      • 2020-10-03
      • 2022-07-15
      • 2022-06-30
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多