【发布时间】:2012-05-15 08:16:48
【问题描述】:
我正在创建一个触发器:
CREATE OR REPLACE TRIGGER ItemAvgRatingTrigger
AFTER INSERT OR UPDATE OF rating ON Collectionitems
REFERENCING NEW AS newRow
FOR EACH ROW
BEGIN
UPDATE Item
SET rating = (SELECT AVG(Collectionitems.rating) FROM Collectionitems, Item WHERE
Collectionitems.itemid = newRow.itemid AND newRow.itemid = Item.itemid)
WHERE Item.itemid = newRow.itemid;
END ItemAvgRatingTrigger;/
每当我通过更新 Collectionitems 中的一行来运行触发器时,我都会得到 squirrel 的返回:
Error: ORA-04098: trigger 'CA0513.ITEMAVGRATINGTRIGGER' is invalid and failed re-validation
SQLState: 42000
ErrorCode: 4098
Position: 7
执行SQL语句:
SELECT * FROM User_Errors;
产生 1 个错误:
PLS-00103: Encountered the symbol "/" The symbol "/" was ignored./n
我已经阅读了很多帖子,其他人也有同样的问题,但还没有找到解决方案,有什么想法吗?
【问题讨论】:
-
这永远行不通。你最终会得到一个变异表异常。你的实际问题是双重的。您应该将新值引用为
:newrow.,并且在“/”之前确实需要回车/换行。 -
感谢您的回复,我已经重新创建了变异表异常,请您解释一下为什么会这样?
标签: sql oracle triggers squirrel-sql