我正在尝试在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用户作为默认值?我知道我可以使用触发器,但我不应该......
答案 0 :(得分:7)
您需要使用USER
而不是CURRENT_USER
:
CREATE TABLE tracking (
pk NUMBER(19,0) PRIMARY KEY,
description VARCHAR2(50),
created_by VARCHAR2(128) DEFAULT USER
);
用户的最大长度是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
是另一个有用的默认列。