Oracle SQL建表报错求助:Functions表修复后,Incidents表仍无法创建
Oracle建表错误排查与修复
核心问题:Incidents表的多余逗号错误
你无法创建Incidents表的直接原因是最后一个外键约束语句末尾多了一个逗号,Oracle SQL语法不允许在最后一个约束定义后保留这类多余的逗号。
错误代码片段:
CONSTRAINT inc_enname_fk FOREIGN KEY (enemy_name) REFERENCES Enemies(enemy_name),
修正后:
CONSTRAINT inc_enname_fk FOREIGN KEY (enemy_name) REFERENCES Enemies(enemy_name)
额外注意事项(非当前报错点,但建议优化)
- Oracle官方推荐使用
VARCHAR2而非VARCHAR,当前Functions表中function VARCHAR(10)虽能执行,但VARCHAR是Oracle预留类型,长期来看可能存在行为差异,建议改为VARCHAR2(10)。 Cats表的性别CHECK约束使用'W'标识雌性,行业通用习惯是'F'(Female),这属于命名规范问题,不影响功能,但统一规范能提升代码可读性。
修复后的完整Incidents建表语句
CREATE TABLE Incidents ( nickname VARCHAR2(15), enemy_name VARCHAR2(15), incident_date DATE CONSTRAINT inc_indate_nn NOT NULL, incident_desc VARCHAR2(50), CONSTRAINT inc_con_pk PRIMARY KEY (nickname, enemy_name), CONSTRAINT inc_nic_fk FOREIGN KEY (nickname) REFERENCES Cats(nickname), CONSTRAINT inc_enname_fk FOREIGN KEY (enemy_name) REFERENCES Enemies(enemy_name) );
内容的提问来源于stack exchange,提问作者Miguel Ramalho
相关产品推荐
相关产品推荐

