【问题标题】:invalid trigger specification in oracle [closed]oracle中的无效触发器规范[关闭]
【发布时间】:2015-02-13 19:22:04
【问题描述】:
DROP TABLE a CASCADE CONSTRAINTS;

CREATE TABLE a(
    cyear VARCHAR2(4));

CREATE TRIGGER current_year
BEFORE INSERT ON  cyear
    FOR EACH ROW SET NEW.year = year(NOW());

编辑:

我试过了,

CREATE TRIGGER current_year
  BEFORE INSERT ON a
  FOR EACH ROW
BEGIN
  :NEW.cyear = TO_CHAR(SYSDATE, 'YYYY');
END current_year;

我不断收到 PLS-00103 错误。

【问题讨论】:

  • :NEW.cyear := TO_CHAR(SYSDATE, 'YYYY');。分配的不是=,而是:=

标签: oracle plsql triggers


【解决方案1】:
  1. 在表而不是列上创建触发器
  2. 在 Oracle 中变量未分配SET
  3. Oracle 中没有名为 NOW 的内置函数
  4. NEWOLD 只能在 WHEN 子句中访问;在其他地方,它们应该以冒号开头(:NEW:OLD
  5. 末尾缺少END 关键字(以及触发器正文开头的BEGIN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多