在Oracle中将默认值设置为当前用户

时间:2013-06-03 19:28:23

标签: sql oracle

我正在尝试在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用户作为默认值?我知道我可以使用触发器,但我不应该......

2 个答案:

答案 0 :(得分:7)

您需要使用USER而不是CURRENT_USER

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

SQL Fiddle

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

答案 1 :(得分:1)

请尝试user

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

顺便说一句,我还认为日期时间created_at是另一个有用的默认列。