问题标签 [ora-04091]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - Oracle使用触发器计算平均值
对于学校项目,我们被迫拥有冗余信息并使用触发器对其进行更新。我们有一个名为“recipe_ratings”的表,其中包含一个“评级”(数字 0-100)。在我们的“食谱”表中,我们有一个名为“评级”的冗余行,其中包含该特定食谱的平均评级。
我们尝试像这样创建一个 Oracle 触发器:
但这给了我们:ORA-04091:表名正在变化,触发器/函数可能看不到它。我们正在试验“自主交易”,但感觉就像我们正在远离我们的触发器。
我们怎样才能使这个触发器起作用?
oracle - java.sql.BatchUpdateException:在插入触发器之前出现 ORA-04091
我在插入触发器之前遇到了一个奇怪的错误,我无法理解。即使在阅读了此处发布的具有类似问题的多个问题之后。
无法处理“方法”:category_id = 'foo' 和 request_id = '99' 错误:java.sql.BatchUpdateException:ORA-04091:表 SCHEMA.ANIMAL_TABLE 正在变异,触发器/函数可能看不到它 ORA-06512:在“ SCHEMA.TRIGGER_NAME”,第 7 行 ORA-04088:执行触发器 'SCHEMA.TRIGGER_NAME' 期间出错
这是触发器:
我知道有关在持有触发器的同一个表上进行修改的规则,但我也红色了一些在更改新列时它应该起作用的东西,并且只适用于 :NEW 字段。我还认为它可能缺少 UPDATE 作为触发事件,但事实并非如此。任何人都可以帮助我吗?因为我是触发器和 PL/SQL 的新手。
oracle - Oracle 复合触发器 - 如何存储和“使用”已删除的行?INDEX BY 表?
我现在正在为 Oracle 中的 DELETE 触发器进行长期斗争,该触发器在删除一行后,会从剩余的行中选择一个新的 MAX 值并将其写入另一个表。在偶然发现烦人的 ORA-04091 变异表错误(在 FOR EACH ROW 时无法读取表)后,我切换到 Oracle 的复合触发器。
我怎样才能最好地存储已删除的行(每行有多个值,因为只有在删除的分数可能是高分而不是低分时,进一步检查才会更新)?我担心如果多个触发事件交叉触发并且例如为“DeletedMatches”运行高分更新,该全局临时表可能会以一团糟而告终,这些“DeletedMatches”实际上并没有被删除,而是由触发事件之前注册。
我可以创建一个表,它 a) 仅在此触发器中本地存在 b) 可以像普通数据库表或临时表一样在 SQL 中使用?
每当匹配被删除时,以下(伪)代码将更新 CurrentHighScores 表(旧的高分消失并由最高的剩余分数代替)。
database - 更新触发器以更新到同一个表
我知道这是因为触发器无法更改它读取的表的内容。
谁能帮我完成这个
当我编写此查询时,发生以下错误
执行请求的操作时遇到错误
ORA-04091:表 Admin.PATIENT_REGISTRATION 正在变异,触发器/函数可能看不到它
ORA-06512:在“ADMIN.PATREG_PAID_AMT_TEMP”,第 4 行
ORA-04088:执行触发器“ADMIN.PATREG_PAID_AMT_TEMP”
时出错 04091.000000-”表 %s.%s 正在发生变化,触发器/函数可能看不到它”
oracle - 触发器给出 ORA-04091 错误
我有一个插入后触发器table tbl_campboss_report
,但它给了我
tbl_campboss_report
正在变异,触发器/函数可能看不到它
这是我的触发器:
谁可以帮我这个事?
提前致谢
triggers - Oracle SQL 触发器插入/更新---
请帮我解决这个问题,我想编写一个触发器,只要源表中发生插入/更新,我就可以将值插入到新表中。
下面是我想将数据提取到另一个表中的表结构。
列表
Name Null Type
LISTINGID NOT NULL VARCHAR2(28)
LISTINGMANAGERID NOT NULL VARCHAR2(28)
MANAGEAVAILABILITYFLAG VARCHAR2(1)
AVAILABILITYTEXT VARCHAR2(2000)
AREAINQUIRYFLAG VARCHAR2(1)
COUNTRYTEXT VARCHAR2(50)
STATEPROVINCETEXT VARCHAR2(50)
CITYTEXT VARCHAR2(50)
CHECKINTIME VARCHAR2(10)
CHECKOUTTIME VARCHAR2(10)
TIMEZONEID VARCHAR2(20)
PERSONALLINKURL VARCHAR2(150)
GOLDSUBSCRIPTIONSINCE DATE
AUDITPASSFLAG NOT NULL VARCHAR2(1)
MGRONLINEFLAG NOT NULL VARCHAR2(1)
ADMINAPPROVALFLAG NOT NULL VARCHAR2(1)
DELETEDFLAG VARCHAR2(1)
LASTUPDATED NOT NULL DATE
UPDATEDBY NOT NULL VARCHAR2(28)
OCA NOT NULL NUMBER(38)
SUSPENDEDFLAG NOT NULL VARCHAR2(1)
POSSIBLEFEATUREDCITYFLAG NOT NULL VARCHAR2(1)
TOTALPHOTOS NUMBER(38)
SUSPENDEDDATE DATE
OFFLINEDATE DATE
CURRENCY VARCHAR2(3)
POINTCHARGE VARCHAR2(2)
AVERAGEOFREVIEWS FLOAT(126)
NUMBEROFREVIEWS NUMBER(38)
RENTALMODEL VARCHAR2(10)
NOTHANKS VARCHAR2(1)
DIGITALSIGN VARCHAR2(50)
需要下表中的结果以及列表表中的任何更新或新插入。
i)listingid 应该包含列表中的listingid。
ii)OFFLINE COLUMN 应包含具有以下条件的数据。
AuditPassFlag = 'Y' AND AdminApprovalFlag='Y' AND MgrOnlineFlag='Y' AND DeletedFlag 为 NULL AND SuspendedFlag !='Y'
iii) TIMESTAMP COLUMN 列表中的最后更新日期。
LISTING_LASTUPDATE 表
名称空类型
LISTINGID NOT NULL VARCHAR2(20)
IS_OFFLINE VARCHAR2(1)
TIMESTAMP TIMESTAMP(0)
在我写的触发器下面:
它在 where 条件下无法正常工作,这意味着列表在线:除此之外它工作正常。
oracle - ora-04091 表正在变异-
我正在使用一个函数来比较表 1 和表 2 中的所有列并返回“Y”或“N”。基于此,我将更新我的表 1。
但是当我运行合并语句时,它显示一个错误:
ora-04091 - Table1 正在变异,触发器/函数可能看不到它
我怎样才能解决这个问题?
我正在使用的合并语句是:
sql - Oracle SQL setting single unique character
I am having trouble with creating a table in oracle SQL.
I was looking to have a column called DEFAULTRULE. Only 1 row in this column can be '1' at any given time. So for example
If I was to update ID 2 to have default rule = 1 then it would either set ID 3 default rule to 0
or
throw an error (I don't really mind as long as there is only one '1')
I have tried to create triggers to do both but keep getting the
ORA-04091 table is mutating, trigger/function may not see it.
2 of my attempts:
and
Would anyone be able to point me in the right direction? Thanks in advance. Jon
oracle - 将 DB2 触发器转换为 Oracle 触发器 ORA-04091 错误
所以我有两张表:JOBS 和TASKS。
TASKS 表有一个 TAKS_STATUS 列,它存储状态的进展(例如,“提交”、“已提交”、“已授权”、“已完成”)。
JOBS 表有一个JOB_STATUS 列,它是TASKS 表中TASK_STATUS 列的汇总(即最小状态)。JOBS 表还有一个 TASK_COUNT 值,其中包含与 Job 关联的 TASKS 的数量。
作业可以有一个或多个任务:每个表中的 JOB_ID 链接它们。
在 DB2 中,我有一系列简单的触发器来汇总这种状态;这是中间的一个:
这在 DB2 中工作得很好,因为触发器与触发事件在同一个工作单元中运行,因此它可以看到工作单元的未提交更改,并且可以计算刚刚发生的 TASK_STATUS 更改而不会遇到行锁。
这是 Oracle 中翻译后的触发器:
在 Oracle 中,这失败了:
显然,Oracle 的触发器不在同一上下文中运行,看不到未提交的触发更新,因此永远无法计算包括触发行在内的特定状态的任务数。
我想我可以将 AFTER 触发器更改为 INSTEAD OF 触发器并更新触发器内的 TASK_STATUS(以及 JOB_STATUS)(因此作业更新可以看到任务更新),但我会遇到同样的错误吗?也许不是第一个任务更新,但是如果触发程序在提交之前更新了一堆任务怎么办:当第二个任务更新时会发生什么?
我还考虑过删除触发器并让程序扫描活动作业以了解其任务的状态,但这似乎不优雅。
在 Oracle 中这样的最佳实践是什么?
ora-04091 - 触发器无法工作 - ora-04091 tabla 正在静音
嗨,我是甲骨文的初学者:)
我想写一个触发器,什么是监视我的 AAAA 表中的某些记录,如果有人修改某些记录触发器将插入另一个(BBBB)表中的修改日期和修改值。
如果我尝试修改 AAAA 中的值,我会得到 3 个异常:
- ora-04091
- ora-06512
- ora-04088