2013-06-03 13 views
5

Próbuję utworzyć nową tabelę w Oracle 11g, gdzie domyślną wartością kolumny jest aktualnie zalogowany użytkownik. Muszę to zrobić dla celów logowania.Ustawianie domyślnej wartości bieżącego użytkownika w Oracle

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

Jak mogę napisać rozdział DEFAULT CURRENT_USER więc zajmie bieżącego użytkownika Oracle jako wartość domyślną? Wiem, że mógłbym użyć spust, ale nie powinno się ...

Odpowiedz

7

Trzeba użyć USER nie CURRENT_USER:

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

SQL Fiddle

Maksymalna długość wynosi 30 użytkownik , więc możesz to zmniejszyć i zwiększyłem rozmiar Twojej kolumny OPIS, chyba że jesteś pewien, że wszystko będzie zawierało mniej niż 51 znaków.

+0

+1 @Ben - to wszystko prawda, a pokonałeś mnie około 2 sekund :) –

+0

Aby powtórzyć komentarz Gordona, dobrym pomysłem może być również kolumna CREATED_AT. – Ben

+0

Czy 'LOCALTIMESTAMP' może być użyty jako wartość' DEFAULT'? Właściwie jednym z powodów użycia wyzwalacza zamiast domyślnego byłoby uniemożliwienie każdemu jawnego ustawienia kolumn 'created_by' lub' created_at'. –

1

Spróbuj user zamiast:

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

Nawiasem mówiąc, ja też myślę created_at dla datetime to kolejny przydatny domyślna kolumna.

Powiązane problemy