我的数据库中目前有下表,其中包含所述数据:
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
非常感谢任何帮助!
最佳答案
了解问题后将评论作为答案
请确保在与运行 delete
语句的程序相同的连接中使用 commit
。从应用程序中删除并在 SQL Developer 上提交将不起作用。
现在您可以执行以下两件事之一
(1) 更改代码并运行一次commit
,然后确保在每个DML 语句
之后使用commit
。
(2) 一起使用delete
和commit
。如果数据已经删除
,则不会再次删除,并且之后会发生commit
。如果不删除,则将被删除并提交。
关于mysql - SQL 查询返回已删除的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38076614/