【问题标题】:Oracle Trigger after delete删除后的Oracle触发器
【发布时间】:2016-04-05 00:06:57
【问题描述】:

我在删除databaseA员工表中的一行后尝试执行触发器删除,具有相同employeeid的databaseB作者表也将被删除。但是经过几次尝试,它一直提示触发器有错误,而没有指定错误是什么。这是我的代码。谢谢。

      DELIMITER //
      CREATE OR REPLACE TRIGGER employee_delete 
      AFTER DELETE on databaseA.employee
      FOR EACH ROW
      BEGIN
      DELETE FROM databaseB.author
      WHERE databaseB.author.employeeid = old.employeeid
      END;
      /

【问题讨论】:

  • show errors,或者查询user_errors视图,查看实际的编译错误。 “数据库”是指“模式”吗?您在 :old 之前缺少一个冒号,但不确定这是否是唯一的问题。
  • DELETE 语句后缺少分号;你甚至需要:old 而不是old
  • this question 可能重复,如果这是唯一的错误。
  • 我添加了冒号 WHERE databaseB.author.employeeid = :old.employeeid 但仍然出现错误。
  • 您是否也在删除语句的末尾添加了分号?正如我之前所说,使用show errors 来查看问题所在。

标签: oracle triggers


【解决方案1】:

以上两张海报都是创作的。您必须用分号“;”结束实际的删除语句。此外,“旧”和“新”必须以冒号“:”为前缀。此外,触发器可能存在一些授权问题,具体取决于授权、同义词和授权。如果我猜的话,语法问题是第一个问题。如果在那之后,您仍然遇到问题,您可能遇到了拨款问题。

【讨论】:

  • 是的,是分号导致的。谢谢大家!
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多