【问题标题】:How to insert date in a table column with a trigger. (ORACLE)如何使用触发器在表列中插入日期。 (甲骨文)
【发布时间】:2016-06-11 03:24:46
【问题描述】:

基本上我希望创建一个触发器,在每次插入或更新后跟踪和编辑特定行的date_created 列。

这些是我表中的列:

| customer_id | store_id | Quantity | date_created |

customer_id 和 store_id 一起是表的主键

到目前为止我所拥有的:

CREATE OR REPLACE TRIGGER date_trig
BEFORE INSERT ON customer_table
FOR EACH ROW

DECLARE
BEGIN

-- This is where I assume the date will be set or edited

END;

我是 PL/SQL 的新手,所以我正在努力处理这个触发器的实际主体。

另外,我的触发器结构是否正确形成?

【问题讨论】:

  • 您不需要这样做。你可以定义一个date_created,默认值为sysdate
  • 感谢您的建议,但我确实需要为此使用触发器。
  • 如果您在基础知识方面遇到困难,请查看例如PL/SQL Triggers 来自 Oracle 文档。

标签: sql oracle plsql triggers sqlplus


【解决方案1】:
  1. 在列上使用 DEFAULT SYSDATE date_created 就像已经建议的那样
  2. 如果你坚持使用触发器,就写:NEW.date_created := SYSDATE;

【讨论】:

  • 是的,我想自学一些 PL/SQL,所以我需要为此编写一个触发器。这真的是我需要放入触发器主体中以使创建日期起作用的全部内容吗?
  • 尝试在下一行的END; 之后添加/,这是创建PL/SQL 程序单元、触发器等时的标准终止分隔符。
  • 感谢 olli 的工作。但是 date_created 列是空的,所以我认为触发器不起作用。
  • 您确定触发器创建正确吗?在触发器创建后立即发出SHOW ERROR。我在回答中错过了: - 我编辑了它。请检查并重试。
  • 我添加了编辑,但创建日期列仍然是空的。
【解决方案2】:

您好,请查找示例代码。

create or replace trigger emp_mod_date
before update or insert on emp
for each row
begin
 :new.mdate := sysdate;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2021-11-12
    • 1970-01-01
    相关资源
    最近更新 更多