创建表时出现Sql错误 - Firebird

问题描述 投票:1回答:1

我有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。第二个错误呢?如何解决这个问题?

sql firebird ddl sqldatatypes ibexpert
1个回答
4
投票
  1. Firebird中没有VARCHAR2类型 - https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-datatypes-chartypes.html
  2. 如果要运行两个命令 - 必须运行两个命令。您尝试在一个中运行两个命令,但这不是一种方法。你必须分开它们并一个接一个地运行。或者你必须将它们包装成一个EXECUTE BLOCK命令。
  3. 此外,IBExpert还有一个单独的Script Executive窗口,用于运行多个命令。它不是用于执行ONE命令的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 )
)
© www.soinside.com 2019 - 2024. All rights reserved.