我定义了一个触发器,主要功能是做一个表数据的同步,如果直接用toad增加数据,触发器可正常执行,但是靠hibernate新增数据之类,触发器中like语句一直返回false的结果。求解决办法!!
下面是我的触发器:
CREATE OR REPLACE TRIGGER NOTXSI
AFTER INSERT
ON ELEMENT
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
BEGIN
delete from my_sales.ELEMENT tt where tt.fd_id=:new.fd_id and tt.fd_hierarchy_id like '%7e77%';
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END notxiaosi;
oracle触发器中使用like语句,和hibernate共同使用时失效,怎么办?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-02 00:29关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Oracle触发器中,你可以使用
LIKE表达式来匹配特定模式或字符串。然而,在Hibernate中,你需要确保你的数据模型与Oracle数据库具有良好的映射。首先,请检查以下几点:
- 确保你的
ELEMENT表有正确的索引设置(例如fd_id和fd_hierarchy_id)以支持LIKE查询。 - 在触发器中,尝试将
LIKE表达式替换为INSTR函数,这通常比LIKE更可靠地匹配字符串。 - 如果可能的话,考虑使用ORM工具(如Hibernate或JPA),以便更好地处理数据库和对象之间的映射关系。
此外,你还可以尝试调整你的
INSERT操作,使其不依赖于LIKE查询。例如,可以使用UPDATE操作来更新表中的行,并使用DELETE操作来删除不需要的行。这样可以在不影响触发器性能的情况下保持一致性。最后,如果你遇到任何问题,请提供详细的错误信息,包括你在Oracle数据库上运行的所有命令以及你在Hibernate中使用的所有参数。
解决 无用评论 打赏 举报- 确保你的