2017-10-09 7 views
0

Je reçois un jeton inconnu QTY lors de l'exécution de la DML ci-dessous, avec une perte complète de pourquoi QTY est contenue plus tôt dans la définition de la table. L'erreur se produit dans la colonne COMPUTED.Jeton inconnu, Firebird calculé par

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

Répondre

4

Vous devez mettre entre parenthèses l'expression:

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

Oui, je l'avais découvert que moi-même et allait répondre à ma propre question. Dans le livre de Borrie, il y a un exemple d'un champ calculé concaténant des chaînes qui n'ont pas de parens mais la définition de la syntaxe ci-dessus a (expr). – user1455270

+1

@ user1455270 Oui, mais le livre est juste un livre. Vous pouvez consulter la documentation sur https://www.firebirdsql.org/fr/reference-manuals/: IB6 LangRef ou réécrire le formulaire FB2.5 Reference. Vous pouvez également utiliser GUI IDE comme IBExpert ou FlameRobin, puis afficher la table créée en tant que script SQL –