我遇到了一个问题:
我打算在H2创建2个表。当我尝试创建第二个表时,发生错误:
未找到C_TASK列
以下是代码:
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);
答案 0 :(得分:3)
您正在为表S_ACHIEVEMENT
中不存在的列定义关系(外键)。外键是子表("很多"表)上的列与父表上的列(" one"表)之间的链接。您的代码表示您希望链接来自字段" C_TASK"在" S_ACHIEVEMENT"但没有" C_TASK"那张桌子上的字段。
以具有0个或更多发票(子表)的客户(父表)为例,每个发票必须由一个客户拥有。同样,发票表又是订单项表的父级。
你会有表格和列:
在invoice_表上,您将定义:
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_ ) ;
这些列标有"(外键)"是您忘记在孩子桌上定义的内容。
有关其他示例,请参阅此帖子H2 Alter Table Add Foreign Key。