2017-10-09 104 views
0

执行下面的DML时,我得到令牌未知的QTY,完全丧失了为什么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))); 

回答

4

你需要把括号中的表达:

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) 
); 
+0

是啊,我已经发现自己,并要回答我的问题。在Borrie的书中,有一个计算字段连接字符串的例子,它没有parens,但是它上面的语法定义确实有(expr)。 – user1455270

+1

@ user1455270是的,但这本书就是这样一本书。您可以从https://www.firebirdsql.org/en/reference-manuals/:IB6 LangRef或重新编写的格式scratch FB2.5 Reference中查看文档。您也可以使用IBExpert或FlameRobin等GUI IDE,然后将创建的表视为SQL脚本 –