Trigger to insert sysdate after pasting in Oracle

I tried using the following, but apparently invalid SQL:

CREATE OR REPLACE TRIGGER QUESTION_DATE BEFORE INSERT ON QUESTION 
FOR EACH ROW
BEGIN
INSERT INTO QUESTION(CREATED_TIMESTAMP) 
VALUES (SYSDATE);
END;

The question table looks like this:

CREATE TABLE QUESTION
(   
    QUESTION_ID             INTEGER not null,
    LATEST_QUESTION         INTEGER not null,
    CREATED_USER_ID         INTEGER not null,
    CREATED_TIMESTAMP       TIMESTAMP not null,     
    CONSTRAINT PK_QUESTION  PRIMARY KEY (QUESTION_ID)
);

CREATE SEQUENCE QUESTION_ID_SEQ INCREMENT BY 1 START WITH 1 NOCYCLE NOCACHE NOORDER;

CREATE TRIGGER QUESTION_INSERT BEFORE INSERT ON QUESTION 
FOR EACH ROW
BEGIN
SELECT QUESTION_ID_SEQ.nextval
INTO :new.QUESTION_ID
FROM dual;
END;

I am using Toad for Oracle V9.0.1.8 if it is relevant

+5
source share
3 answers

I think you probably want this:

CREATE OR REPLACE TRIGGER QUESTION_DATE BEFORE INSERT ON QUESTION 
FOR EACH ROW
BEGIN
 :NEW.CREATED_TIMESTAMP := SYSDATE;
END;

Your trigger is trying to insert another line into the QUESTION, which fires the trigger and ...

+12
source

Do not use a trigger to set the default value in Oracle. Instead, use "DEFAULT" in the column. Here is the exmple column

CREATED_TIMESTAMP  TIMESTAMP  DEFAULT SYSDATE  NOT NULL,
+16
source

: new.created_timestamp: = sysdate

.

, .

sysdate , insert.

+1
source

All Articles