H2 和外键
H2 and FOREIGN KEY
我运行遇到一个问题:
我打算在 H2 中创建 2 tables。当我尝试创建第二个 table 时,出现错误:
column C_TASK not found
代码如下:
CREATE TABLE S_TASK (C_TASK INT PRIMARY KEY, N_TASK VARCHAR(255), POINT_COUNT INT);
CREATE TABLE S_ACHIEVEMENT(C_ACHIEVEMENT INT PRIMARY KEY, N_REWARD VARCHAR(255), PICTURE VARCHAR(255), FOREIGN KEY (C_TASK) REFERENCES S_TASK(C_TASK), EXEC_COUNT INT);
没有定义链接字段
您正在为 table S_ACHIEVEMENT
中不存在的列定义关系(外键)。 child table("many" table)上的列和 parent [=93] 上的列之间的外键 link =]("one" table)。您的代码说您希望从 "S_ACHIEVEMENT" 上的字段 "C_TASK" link,但 table.
上没有 "C_TASK" 字段
例子
以拥有 0 张或多张发票 (child table) 的客户 (parent table) 为例,并且每张发票必须仅由一位客户拥有.同样,发票 table 又是行项目 table.
的 parent
您将有 table 和列:
- 客户_
- 姓名_
- 电话_
- uuid_(主键)
- 发票_
- invoice_number_
- date_of_invoice_
- uuid_(主键)
- fk_customer_uuid_(外键)
- line_item_
- item_number_
- product_sold_
- 成本_
- uuid_(主键)
- fk_invoice_uuid_(外键)
在发票上_ table 您将定义:
ALTER TABLE invoice_ ADD FOREIGN KEY ( fk_customer_uuid_ ) REFERENCES customer_( uuid_ ) ;
和
ALTER TABLE line_item_ ADD FOREIGN KEY ( fk_invoice_uuid_ ) REFERENCES invoice_( uuid_ ) ;
那些标记为“(外键)”的列是您忘记在 child table 上定义的内容。
请参阅此帖子,H2 Alter Table Add Foreign Key,了解另一个示例。
我运行遇到一个问题:
我打算在 H2 中创建 2 tables。当我尝试创建第二个 table 时,出现错误:
column C_TASK not found
代码如下:
CREATE TABLE S_TASK (C_TASK INT PRIMARY KEY, N_TASK VARCHAR(255), POINT_COUNT INT);
CREATE TABLE S_ACHIEVEMENT(C_ACHIEVEMENT INT PRIMARY KEY, N_REWARD VARCHAR(255), PICTURE VARCHAR(255), FOREIGN KEY (C_TASK) REFERENCES S_TASK(C_TASK), EXEC_COUNT INT);
没有定义链接字段
您正在为 table S_ACHIEVEMENT
中不存在的列定义关系(外键)。 child table("many" table)上的列和 parent [=93] 上的列之间的外键 link =]("one" table)。您的代码说您希望从 "S_ACHIEVEMENT" 上的字段 "C_TASK" link,但 table.
例子
以拥有 0 张或多张发票 (child table) 的客户 (parent table) 为例,并且每张发票必须仅由一位客户拥有.同样,发票 table 又是行项目 table.
的 parent您将有 table 和列:
- 客户_
- 姓名_
- 电话_
- uuid_(主键)
- 发票_
- invoice_number_
- date_of_invoice_
- uuid_(主键)
- fk_customer_uuid_(外键)
- line_item_
- item_number_
- product_sold_
- 成本_
- uuid_(主键)
- fk_invoice_uuid_(外键)
在发票上_ table 您将定义:
ALTER TABLE invoice_ ADD FOREIGN KEY ( fk_customer_uuid_ ) REFERENCES customer_( uuid_ ) ;
和
ALTER TABLE line_item_ ADD FOREIGN KEY ( fk_invoice_uuid_ ) REFERENCES invoice_( uuid_ ) ;
那些标记为“(外键)”的列是您忘记在 child table 上定义的内容。
请参阅此帖子,H2 Alter Table Add Foreign Key,了解另一个示例。