关于临时表的生存周期

[复制链接]
查看11 | 回复9 | 2015-10-8 17:57:58 | 显示全部楼层 |阅读模式
我的一个java程序通过JNDI存取Oracle数据库的一个临时表,运行结果则是通过浏览器呈现给用户。本来以为connection close执行之后,当前会话就结束了,临时表里面的数据就没有了,但是我按了浏览器的后退按钮,临时表里面的数据又出现了。这是怎么回事?难道和数据库的当前会话并没有真正断开?哪有什么办法结束当前会话呢?我现在只好在运行程序前删除临时表里面的数据。我希望有个更好的办法。
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
浏览器的回退按钮可能只是现实页面的CACHE, 没有再次读表。
临时表的数据对SESSION有效。如果用了连接池,只要取的是同一个SESSION, 就会看到以前数据。
CREATE GLOBAL TEMPORARY TABLE MY_TABLE (。。。。) ON COMMIT DELETE ROWS
这样会在 COMMIT 的时候自动删除。但如果你COMMIT之后想看结果数据可能就看不到了,一定要想清楚。
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
1/你的临时表是楼上说的临时表吗?如果是,就 有可能 出现你所描述的情况,但不是一定出现
因为通过浏览器去访问一般要走连接池,你再次连接不一定能连到你之前的那个连接上
应用断开了连接,实际连接池中与数据库的连接并不一定会未断开
2/浏览器本身的问题
以IE为例,Internet选项中,设置,设为 “每次访问此页时检查”,而不是“自动”
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
原帖由 于 2008-7-3 22:41 发表
1/你的临时表是楼上说的临时表吗?如果是,就 有可能 出现你所描述的情况,但不是一定出现
因为通过浏览器去访问一般要走连接池,你再次连接不一定能连到你之前的那个连接上
应用断开了连接,实际连接池中与数据库的连接并不一定会未断开
2/浏览器本身的问题
以IE为例,Internet选项中,设置,设为 “每次访问此页时检查”,而不是“自动”

是的,是这种临时表。我不能on commit delete,必须on commit preserve。
现在我的问题就是怎么能保证我断开连接以后就结束会话,也就是断开连接池和数据库的连接,有什么手段可以做到吗?
IE设成“每次访问此页时检查”可以解决这个问题吗?但是这个方法不好,因为IE白不是只是用来运行这个程序。
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
你要物理断开连接那么连接池就失去意义了,这损失比你手工DELETE数据还更大。
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
原帖由 newkid 于 2008-7-4 22:21 发表
你要物理断开连接那么连接池就失去意义了,这损失比你手工DELETE数据还更大。

我的意思是当我的程序关闭连接的时候就断开和数据库的连接。不然还有什么更好的办法的话也欢迎指出!
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
这个和oracle没关系的,你想想我再itpub转了个徽章给别人,我点后退还是能看到那个我刚刚转换的徽章,事实上你已经没拥有那徽章了
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
原帖由 棉花糖ONE 于 2008-7-4 23:38 发表
这个和oracle没关系的,你想想我再itpub转了个徽章给别人,我点后退还是能看到那个我刚刚转换的徽章,事实上你已经没拥有那徽章了

如果掉线了,后退也会找不到网页的.
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
你换回的时候没有执行action啊,所以不会在度数据库的,所以还是原来的数据!
回复

使用道具 举报

千问 | 2015-10-8 17:57:58 | 显示全部楼层
原帖由 棉花糖ONE 于 2008-7-4 23:38 发表
这个和oracle没关系的,你想想我再itpub转了个徽章给别人,我点后退还是能看到那个我刚刚转换的徽章,事实上你已经没拥有那徽章了

好像不是这样。
我第一次运行的时候,在临时表里插入了3行数据。然后我在程序里面关闭了连接。
然后我在浏览器里面回退,再运行一遍程序,结果临时表里有了6行数据。
所以和数据库并没有真正断开。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行