2017-01-23 18 views
-1
create table assignments 
( 
    loginid varchar2(6), 
    comments varchar2(20), 
    status char(1), 
    given_by varchar2(6), 
    courseanddept varchar2(15), 
    adate date default sysdate, 
foreign key(loginid) references login(loginid) 
); 

私はこの構造のテーブルを持っており、sysdateを自動的に挿入することができません。自動sysdateを挿入するためのクエリは何ですか?自動的にデータベースに日付を挿入します

答えて

3

日付列の値を明示的に設定しないと、デフォルト値が使用されます。例えば:

insert into assignments(loginid  , 
         comments  , 
         status  , 
         given_by  , 
         courseanddept 
         ) 
       values ('login', 
          'comments', 
          'X', 
          'Y', 
          'unknown' 
         ) 

結果のデータ:

あなたが列の値を設定した場合、あなたが設定した値が使用され、デフォルトが無視され
SQL> select adate from assignments; 

ADATE 
--------- 
23-JAN-17 

insert into assignments(loginid  , 
         comments  , 
         status  , 
         given_by  , 
         courseanddept , 
         adate 
         ) 
       values ('login2', 
          'comments2', 
          'Z', 
          'W', 
          'unknown2', 
          date '2016-12-31' 
         ) 

が得られます。

SQL> select adate from assignments; 

ADATE 
--------- 
31-DEC-16 

yなら同じことNULL値を設定OU:

insert into assignments(loginid  , 
         comments  , 
         status  , 
         given_by  , 
         courseanddept , 
         adate 
         ) 
       values ('login3', 
          'comments3', 
          'Z', 
          'W', 
          'unknown2', 
          null 
         ) 

ができます:

SQL> select adate from assignments; 

ADATE 
--------- 


SQL> 
0

既に挿入しながらので、あなたが入力を与えていない時はいつでも、デフォルトのSYSDATEに言及したように、列「ADATE」のための任意の入力を与えてはいけませんそれはsysdateとして更新されます。値を指定すると、値をとりsysdateを無視します。上記の例を参照してください。あなたははっきり理解するでしょう。

関連する問題