【问题标题】:SQL Insert Statement causing error in Oracle在 Oracle 中导致错误的 SQL 插入语句
【发布时间】:2019-12-12 02:02:00
【问题描述】:

我正在尝试这样做

INSERT INTO INSPECTIONOFFICE (INSPOFFICE_ID, INSPOFFICE_NAME, INSPOFFICE_STREET, INSPOFFICE_CITY, INSPOFFICE_STATE, INSPOFFICE_ZIPCODE, INSPOFFICE_CONTPERSONFNAME, INSPOFFICE_CONTPERSONLNAME, INSPOFFICE_CONTPERSONPHONE, INSPOFFICE_CONTPERSONEMAIL)
VALUES (12, 'InspectionOffice1', '121 Ames st', 'Omaha', 'NE', 68128, 'Brad', 'Foley', '4022853487', 'BradFoley@gmail.com');

但我得到一个错误

从第 22 行开始的错误命令 -
插入 INSPECTIONOFFICE(INSPOFFICE_ID、INSPOFFICE_NAME、INSPOFFICE_STREET、INSPOFFICE_CITY、INSPOFFICE_STATE、INSPOFFICE_ZIPCODE、INSPOFFICE_CONTPERSONFNAME、INSPOFFICE_CONTPERSONLNAME、INSPOFFICE_CONTPERSONPHONE、INSPOFFICE_CONTPERSONEMAIL)
值(12,'InspectionOffice1','121 Ames st','Omaha','NE',68128,'Brad','Foley','4022853487','BradFoley@gmail.com')
命令行错误:22 列:13
错误报告 -
SQL 错误:ORA-04098:触发器“JMEEK.INSPECTIONOFFICE_INSPECTIONOFF”无效且重新验证失败
04098. 00000 - “触发器 '%s.%s' 无效并且重新验证失败”
*原因:尝试检索触发器以执行,但发现该触发器无效。这也意味着触发器的编译/授权失败。
*Action:选项是解决编译/授权错误、禁用触发器或删除触发器。

知道如何解决这个问题吗?

【问题讨论】:

  • 对不起,我对 sql 很陌生,这是什么意思?
  • 看起来在表上写了一个用于插入事件的触发器。每当事件发生时都会执行触发器,在这种情况下它是插入事件。 tutorialspoint.com/plsql/plsql_triggers.htm 当您执行此插入查询时,将执行触发器并且触发器中的逻辑未通过验证。这就是您看到此错误的原因。

标签: sql oracle


【解决方案1】:

您似乎没有权限访问触发器 JMEEK.INSPECTIONOFFICE_INSPECTIONOFF

或者有一些编译问题...

你应该看看触发器。

或者,如果您不知道触发器是什么,请致电有经验的工作的队友。 :)

顺便说一句,如果你是一个人,也没关系..你可以禁用/放下触发器..

此命令禁用,您可以稍后启用

ALTER TRIGGER JMEEK.INSPECTIONOFFICE_INSPECTIONOFF DISABLE;

这个命令删除触发器,你将永远失去它(如果你没有备份)

drop trigger JMEEK.INSPECTIONOFFICE_INSPECTIONOFF;

【讨论】:

    【解决方案2】:

    触发器JMEEK.INSPECTIONOFFICE_INSPECTIONOFF,我猜是你写的,因为它在JMEEK 模式中,(我再次猜测)似乎是你的,是无效的,这意味着它有编译错误。要找出这些错误是什么,您应该执行查询

    SELECT *
      FROM ALL_ERRORS
      WHERE OWNER = 'JMEEK' AND
            NAME = 'INSPECTIONOFFICE_INSPECTIONOFF'
      ORDER BY SEQUENCE
    

    我们没有人能为您做很多其他事情,因为我们不知道这个触发器是什么样的。如果您需要查看源代码,可以执行以下查询:

    SELECT LINE, TEXT
      FROM ALL_SOURCE
      WHERE OWNER = 'JMEEK' AND
            NAME = 'INSPECTIONOFFICE_INSPECTIONOFF'
      ORDER BY LINE
    

    或者您可以使用诸如 Oracle 的免费 SQL Developer 产品之类的 IDE,这将使您轻松完成这一切。

    【讨论】:

      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多