使用rdb $ get_context作为列的默认值

时间:2010-09-04 21:57:51

标签: dns firebird default-value

在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条款?

1 个答案:

答案 0 :(得分: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