यह मानते हुए कि
- आपके कॉलम का नाम वास्तव में
date
नहीं है चूंकि यह एक आरक्षित शब्द है - आपका कॉलम वास्तव में एक
date
के रूप में परिभाषित किया गया है बजाय एकnumber
. के रूप में - नई पंक्ति डालने पर आप कॉलम को पॉप्युलेट करना चाहते हैं
आप कॉलम के लिए एक डिफ़ॉल्ट मान परिभाषित कर सकते हैं।
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
. के हिस्से के रूप में पास किए गए किसी भी मान को ओवरराइड कर देगा या UPDATE
dt
. के लिए स्टेटमेंट कॉलम। एक डिफ़ॉल्ट मान नहीं होगा।