Sql 创建表时出错 - Firebird

Sql error while creating tables - Firebird

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

  1. Firebird 中没有 VARCHAR2 类型 - https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-datatypes-chartypes.html
  2. 如果你想 运行 两个命令 - 你必须 运行 两个命令。您尝试 运行 将两个命令合二为一,但这不是一种方法。您必须将它们分开并 运行 一个接一个。或者你必须将它们包装成一个 EXECUTE BLOCK 命令。
  3. 另外 IBExpert 有一个单独的 window of Script Executive 用于多个命令 运行ning。它不是旨在执行一个命令的 SQL Editor,它是另一个菜单中的单独 window - https://www.ibexpert.net/ibe/pmwiki.php?n=Doc.ScriptExecutive

Table 创建命令描述如下: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 )
)