我在 MySQL 中定义了一个表,如下所示。现在我想在oracle中创建这个表。
但是我如何将更新触发器转换为oracle?
create table test(
userid INTEGER(10) NOT NULL AUTO_INCREMENT,
CONSTRAINT PRIMARY KEY (userid),
fullname VARCHAR(200) NOT NULL,
email VARCHAR(50) NOT NULL,
createdat DATETIME NOT NULL DEFAULT NOW(),
updatedat DATETIME ON UPDATE NOW()
);
最佳答案
举个例子,所以:
CREATE TABLE test
(
userid INTEGER PRIMARY KEY
, fullname VARCHAR2(200) NOT NULL
, email VARCHAR2(50) NOT NULL
, createdat DATE DEFAULT CURRENT_DATE NOT NULL
, updatedat DATE
);
CREATE SEQUENCE test_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER test_insert
BEFORE INSERT
ON test
FOR EACH ROW
BEGIN
SELECT test_seq.NEXTVAL
INTO :new.userid
FROM DUAL;
END;
CREATE OR REPLACE TRIGGER test_update
BEFORE UPDATE
ON test
FOR EACH ROW
BEGIN
SELECT CURRENT_DATE
INTO :new.updatedat
FROM DUAL;
END;
触发器可以是BEFORE UPDATE
、AFTER UPDATE
和INSTEAD
。选择你想要的。有关更多信息,请阅读文档 http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7004.htm
关于mysql - oracle 在更新和插入时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764059/