2010-09-04 2 views
1

В базе данных Firebird мне нужно создать DOMAIN со значением по умолчанию, взятым из контекстной переменной.

Это должно быть что-то вроде

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

Когда я выполняю это, я получаю следующую ошибку

недопустимый маркер.
Динамическая ошибка SQL.
Код ошибки SQL = -104.
Ток неизвестен - строка 2, столбец 13.
RDB $ GET_CONTEXT.

Как это можно сделать, может быть, есть другой способ, чем пункт DEFAULT?

ответ

2

Просто создайте триггер 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

Благодарности Я хотел не создать триггер для каждой таблицы. Firebird не поддерживает это. благодаря – user437239