5

我正在尝试在 Oracle 11g 中创建一个新表,其中列的默认值是当前登录的用户。我需要这样做是为了记录目的。

CREATE TABLE tracking (
  pk NUMBER(19,0) PRIMARY KEY, 
  description VARCHAR2(50),
  created_by VARCHAR2(128) DEFAULT CURRENT_USER
);

如何编写该DEFAULT CURRENT_USER部分,以便将当前 Oracle 用户作为默认值?我知道我可以使用触发器,但我不应该...

4

2 回答 2

10

你需要使用USERnot CURRENT_USER

CREATE TABLE tracking (
  pk NUMBER(19,0) PRIMARY KEY, 
  description VARCHAR2(50),
  created_by VARCHAR2(128) DEFAULT USER
);

SQL小提琴

用户的最大长度是 30,所以你可以减少这个,我会增加你的 DESCRIPTION 列的大小,除非你非常确定所有内容都会少于 51 个字符。

于 2013-06-03T19:33:08.807 回答
1

请尝试user

CREATE TABLE tracking (
  pk NUMBER(19,0) PRIMARY KEY, 
  description VARCHAR2(50),
  created_by VARCHAR2(128) DEFAULT USER
);

顺便说一句,我还认为created_atdatetime 是另一个有用的默认列。

于 2013-06-03T19:34:15.623 回答