在 Oracle 中导致错误的 SQL 插入语句
Posted
技术标签:
【中文标题】在 Oracle 中导致错误的 SQL 插入语句【英文标题】:SQL Insert Statement causing error in Oracle 【发布时间】: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 当您执行此插入查询时,将执行触发器并且触发器中的逻辑未通过验证。这就是您看到此错误的原因。 【参考方案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,这将使您轻松完成这一切。
【讨论】:
以上是关于在 Oracle 中导致错误的 SQL 插入语句的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 在 SQL Management Studio 中导致错误
在 SQL Server 2012 中作为 Varbinary(MAX) 的照片在 Access 2010 中导致错误 502753