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

发布于 2024-09-18 03:15:15 字数 393 浏览 1 评论 0原文

在 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 子句之外还有其他方法?

In a Firebird database, I need to create a DOMAIN with default value taken from the context variable.

It should be something like

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

When I execute this, I am getting the following error

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 13.
RDB$GET_CONTEXT.

How can this be done, maybe there is another way than the DEFAULT clause?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

分開簡單 2024-09-25 03:15:15

只需创建一个 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

Just create a BEFORE INSERT trigger:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文