10

テーブル「製品」を作成し、列を作成したいのですが、テーブルdateに情報を追加すると現在の日付が追加される可能性はありますか?

はいの場合、この表の例を教えてください

create table products (
id number not null,
date number not null
);
4

1 に答える 1

28

仮定して

  1. dateそれは予約語であるため、列には実際には名前が付けられていません
  2. あなたの列は実際には adateではなくa として定義されていますnumber
  3. 新しい行を挿入するときに列にデータを入力したい

列のデフォルト値を定義できます。

SQL> ed
Wrote file afiedt.buf

  1  create table products (
  2  id number not null,
  3  dt date   default sysdate not null
  4* )
SQL> /

Table created.

SQL>
SQL> insert into products( id ) values( 1 );

1 row created.

SQL> select * from products;

        ID DT
---------- ---------
         1 20-NOV-12

dt行を変更するときに列を変更する場合UPDATEは、トリガーが必要です

CREATE OR REPLACE TRIGGER trg_products
  BEFORE INSERT OR UPDATE ON products
  FOR EACH ROW
BEGIN
  :new.dt := sysdate;
END;

INSERTトリガーは、列のorUPDATEステートメントの一部として渡された値をオーバーライドしdtます。デフォルト値はそうではありません。

于 2012-11-20T18:03:04.927 に答える