mysql - oracle 在更新和插入时触发

标签 mysql sql oracle plsql

我在 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 UPDATEAFTER UPDATEINSTEAD。选择你想要的。有关更多信息,请阅读文档 http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7004.htm

关于mysql - oracle 在更新和插入时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764059/

相关文章:

java - 查询错误 ORA-00979 : not a GROUP BY expression

sql - SQL与Oracle中的分组依据不同

php - 使用空值/无值更新 INT/DECIMAL 字段

mysql - Ruby on Rails 表单数据未保存

php - Mysql 左连接问题与 3 个表不返回第一个表中的所有行

php - 我如何优化这个搜索结构?

MySQL:411M 行的平均查询速度较慢

mysql - ON DELETE CASCADE 删除额外的行

mysql - MySQL 中何时使用单引号、双引号和反引号

java - 为什么当记录 > 约 600 条时查询性能急剧下降