1

我有简单的 sql 代码create table,然后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. 第二个错误呢?如何解决这个问题?

4

1 回答 1

4
  1. VARCHAR2Firebird中没有类型 - https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-datatypes-chartypes.html
  2. 如果你想运行两个命令 - 你必须运行两个命令。您尝试同时运行两个命令,但这不是一种方法。您必须将它们拆分并一个接一个地运行。或者您必须将它们包装到一个EXECUTE BLOCK命令中。
  3. 还有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 )
)
于 2019-04-08T09:10:54.760 回答