【问题标题】:Token Unknown, Firebird Computed By令牌未知,Firebird 计算者
【发布时间】:2018-03-20 23:52:45
【问题描述】:

在执行以下 DML 时,我得到令牌未知数量,完全不知道为什么 QTY 包含在表定义的前面。错误发生在 COMPUTED 列上。

CREATE TABLE LINE_ITEMS(
  LINE_ITEM_ID INTEGER NOT NULL, 
  QTY          NUMERIC(10,4) DEFAULT 0, 
  PRICE        NUMERIC(10,4) DEFAULT 0, 
  AMOUNT       COMPUTED BY QTY * PRICE,     
  CONSTRAINT   PK_LINE_ITEMS PRIMARY KEY(LINE_ITEM_ID)));

【问题讨论】:

    标签: sql firebird dml


    【解决方案1】:

    你需要把表达式放在括号之间:

    CREATE TABLE LINE_ITEMS
    (
      LINE_ITEM_ID INTEGER NOT NULL, 
      QTY          NUMERIC(10,4) DEFAULT 0, 
      PRICE        NUMERIC(10,4) DEFAULT 0, 
      AMOUNT       COMPUTED BY (QTY * PRICE),     
      CONSTRAINT   PK_LINE_ITEMS PRIMARY KEY(LINE_ITEM_ID)
    );
    

    【讨论】:

    • 是的,我自己也发现了这一点,并准备回答我自己的问题。在 Borrie 的书中有一个计算域连接字符串的示例,该字符串没有括号,但上面的语法定义确实有 (expr)。
    • @user1455270 是的,但这本书就是这样,一本书。您可以从firebirdsql.org/en/reference-manuals 中查看文档:IB6 LangRef 或重新编写的表格从头开始 FB2.5 参考。您还可以使用 IBExpert 或 FlameRobin 等 GUI IDE,然后将创建的表作为 SQL 脚本查看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2020-04-15
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多