我目前在我的数据库中有以下表格,其中包含所述数据:
SUPPORT_USER_ROLES表:
USER_ID | ROLE_ID
1 | 1
1 | 2
2 | 2
*2* | *1*
最后一行(以'*'表示)已删除,在SQL Developer中没有任何迹象。
我现在正在运行以下查询:
SELECT su.USER_ID
, su.USERNAME
, sur.ROLE_ID
, sr.ROLE_NAME
FROM support_users su
, support_users_roles sur
, support_roles sr
WHERE su.USER_ID = sur.USER_ID
AND su.IS_ACTIVE != ‘N’
AND sr.ROLE_ID = sur.ROLE_ID
AND sr.IS_ACTIVE != ‘N’
并返回以下内容:
{ (USER_ID : 1, ROLE_ID : 1),
(USER_ID : 1, ROLE_ID : 2),
(USER_ID : 2, ROLE_ID : 1),
(USER_ID : 2, ROLE_ID : 2) }
正如你所看到的,它仍在给我:
(USER_ID : 2, ROLE_ID : 1)
即使它不再存在于任何地方。
我使用的是Java,JSF,PrimeFaces,SQL Developer,Hibernate,Weblogic和Eclipse IDE。我不确定我是否在这里大量遗漏了某些东西,需要刷新/更新某些地方。
我以前没有这个,所以我现在非常困惑:S
非常感谢任何帮助!
答案 0 :(得分:1)
在知道问题后将评论作为答案
请确保使用与运行commit
语句的程序相同的连接中的delete
。从应用程序中删除并在SQL Developer上提交将不起作用。
现在你可以做两件事之一
(1)更改您的代码并运行commit
一次,然后确保在每commit
后使用DML statement
。
(2)同时使用delete
和commit
。如果数据已经deleted
,则不会再次删除,之后会发生commit
。如果未删除,则将删除并提交。
答案 1 :(得分:0)
James,如果该行在SQL开发人员中删除但未提交,则可能显示在SQL开发人员界面中不存在,但实际上仍然存在于表中,直到显式提交删除命令。
这可以通过单击SQL Developer中的提交图标或只是执行以下命令来实现: -
select
a.a1,
b_1.b_rid,
b_1.b1,
b_1.b2,
b_2.b_rid,
b_2.b1,
b_2.b2
from
a
left join a_xref_b as xf1 on a.a_rid = xf1.a_rid
and xf1.xref_type = 1
left join b as b_1 on xf1.b_rid = b_1.b_rid
left join a_xref_b xf2 on a.a_rid = xf2.a_rid
and xf2.xref_type = 2
left join b as b_2 on xf2.b_rid = b_2.b_rid