在Oracle中插入后触发插入sysdate

ech*_*aze 7 sql oracle triggers

我尝试使用以下,但显然它是无效的SQL:

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

到目前为止,问题表看起来像这样:

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;
Run Code Online (Sandbox Code Playgroud)

如果那是相关的,我正在使用Toad for Oracle V9.0.1.8

DwB*_*DwB 18

不要使用触发器在Oracle中设置默认值.而是在列上使用"DEFAULT".这是一个简短的专栏

CREATED_TIMESTAMP  TIMESTAMP  DEFAULT SYSDATE  NOT NULL,
Run Code Online (Sandbox Code Playgroud)


Ton*_*ews 12

我想你可能想要这个:

CREATE OR REPLACE TRIGGER QUESTION_DATE BEFORE INSERT ON QUESTION 
FOR EACH ROW
BEGIN
 :NEW.CREATED_TIMESTAMP := SYSDATE;
END;
Run Code Online (Sandbox Code Playgroud)

你的触发器试图在QUESTION中插入另一行,这会触发触发器......