创建表时出现 Sql 错误 - Firebird
Posted
技术标签:
【中文标题】创建表时出现 Sql 错误 - Firebird【英文标题】:Sql error while creating tables - Firebird 【发布时间】:2019-04-08 09:05:07 【问题描述】:我有 create table
的简单 sql 代码,然后是 add constraint
。它看起来像这样:
CREATE TABLE bills (
id INTEGER NOT NULL,
code VARCHAR2(25) NOT NULL,
dateOfGeneration DATE NOT NULL,
job_id INTEGER NOT NULL
);
ALTER TABLE bills ADD CONSTRAINT bills_pk PRIMARY KEY ( id,job_id );
我正在使用 IBExpert - Firebird 的客户端。当我执行此代码时,出现 2 个错误:
第一个错误:-在代码 VARCHAR2(25) NOT NULL
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 29.
(.
第二个错误:-在代码中ALTER TABLE ...
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 8, column 1.
ALTER.
我认为第一个是因为我使用的是varchar2
而不是varchar
。第二个错误呢?如何解决这个问题?
【问题讨论】:
VARCHAR2? Firebord 真的支持这种数据类型吗? 我是这么想的,但似乎不是。 varchar 正在工作。改变表呢? 【参考方案1】:-
在 Firebird 中没有
VARCHAR2
类型 - https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-datatypes-chartypes.html
如果您想运行两个命令 - 您必须运行两个命令。您尝试同时运行两个命令,但这不是一种方法。您必须将它们拆分并一个接一个地运行。或者您必须将它们包装成一个 EXECUTE BLOCK
命令。
另外IBExpert
有一个单独的Script Executive
窗口,用于运行多个命令。它不是 SQL Editor
旨在执行一个命令,它是另一个菜单中的一个单独的窗口 - https://www.ibexpert.net/ibe/pmwiki.php?n=Doc.ScriptExecutive
这里描述了表创建命令:https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-ddl-tbl.html
如果在一个命令中执行,基本上您尝试执行的操作如下所示:
CREATE TABLE bills (
id INTEGER NOT NULL,
code VARCHAR(25) NOT NULL,
dateOfGeneration DATE NOT NULL,
job_id INTEGER NOT NULL,
PRIMARY KEY ( id,job_id )
)
或者如果你坚持命名,那么也许
CREATE TABLE bills (
id INTEGER NOT NULL,
code VARCHAR(25) NOT NULL,
dateOfGeneration DATE NOT NULL,
job_id INTEGER NOT NULL,
CONSTRAINT bills_pk PRIMARY KEY ( id,job_id )
)
【讨论】:
以上是关于创建表时出现 Sql 错误 - Firebird的主要内容,如果未能解决你的问题,请参考以下文章