为 hsqldb 创建架构时出现语法错误

Posted

技术标签:

【中文标题】为 hsqldb 创建架构时出现语法错误【英文标题】:Syntax error when creating schema for hsqldb 【发布时间】:2013-11-28 11:35:20 【问题描述】:

我正在尝试创建一个新架构和一些表,但是当我尝试更改最近创建的表以设置外键时遇到问题。我得到的错误是

此时不应使用“Alter”一词

(如果我删除了 alter 语句,脚本就可以工作,如果在执行表和模式的创建之后执行 alter,它也可以工作,但我需要所有东西作为一个整体工作)。我正在使用 HSQL 数据库管理器。

CREATE SCHEMA TEST2 
CREATE TABLE TEST2.T1 (ID_T1 bigint GENERATED BY DEFAULT AS IDENTITY (START WITH 1), CODE varchar(200), ID_T2 integer NOT NULL, PRIMARY KEY (ID_T1))
CREATE TABLE TEST2.T2 (ID_T2 integer GENERATED BY DEFAULT AS IDENTITY (START WITH 1), DESCRIPTION varchar(200), PRIMARY KEY (ID_T2))
ALTER TABLE TEST2.T1 ADD CONSTRAINT FKT1333520 FOREIGN KEY (ID_T2) REFERENCES TEST2.T2(ID_T2) 

【问题讨论】:

【参考方案1】:

您可以在表定义中定义约束。最后需要一个分号

CREATE SCHEMA TEST2 AUTHORIZATION DBA
CREATE TABLE TEST2.T1 (ID_T1 bigint GENERATED BY DEFAULT AS IDENTITY (START WITH 1), CODE varchar(200), ID_T2 integer NOT NULL, PRIMARY KEY (ID_T1))
CREATE TABLE TEST2.T2 (ID_T2 integer GENERATED BY DEFAULT AS IDENTITY (START WITH 1), DESCRIPTION varchar(200), PRIMARY KEY (ID_T2),
CONSTRAINT FKT1333520 FOREIGN KEY (ID_T2) REFERENCES TEST2.T2(ID_T2));

【讨论】:

嗨!谢谢:),那行得通,但实际上我发布了我的脚本的恢复示例。我有很多其他带有外键的表,我发现很难通过在表创建中指定主键来实现创建......

以上是关于为 hsqldb 创建架构时出现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

创建函数时出现“MySQL语法错误”[关闭]

尝试使用 if 语句创建函数时出现 Postgresql 语法错误

当我尝试在 mysql 中创建触发器时出现语法错误

Redshift Spectrum 在创建嵌套数据时出现语法错误

将 varchar 转换为 int 时出现语法错误

在 sqlite 数据库中创建表时出现语法错误