2010-09-04 16 views
1

Dans une base de données Firebird, je dois créer un DOMAIN avec la valeur par défaut tirée de la variable de contexte.

Il devrait être quelque chose comme

CREATE DOMAIN USER_ID AS INTEGER 
    DEFAULT RDB$GET_CONTEXT('USER_SESSION','UID') NOT NULL; 

Quand j'exécute, je reçois l'erreur suivante

jeton non valide.
Erreur SQL dynamique.
Code d'erreur SQL = -104. Etiquette inconnue - ligne 2, colonne 13.

Comment cela peut-il être fait, peut-être il y a un autre moyen que la clause DEFAULT?

Répondre

2

Il suffit de créer un déclencheur BEFORE INSERT:

CREATE TRIGGER your_trigger_name FOR your_table 
    BEFORE INSERT 
    POSITION 0 
AS 
BEGIN 
    IF (NEW.your_field IS NULL) THEN 
    NEW.your_field = RDB$GET_CONTEXT('USER_SESSION','UID'); 
END 
+0

Merci Je voulais ne pas avoir à créer un déclencheur pour chaque table. Firebird ne supporte pas cela. Merci – user437239