http://topic.csdn.net/u/20090226/23/9b68cdbe-2a00-48fe-83a6-4b1e2ddd4007.html
问题:
我写了个程序是JDBC调用存储过程,这个存储过程是会创建临时表的,现在希望删除临时表。因为不删除,任务重新执行,会报出临时表已创建
网上的答案
A:在保持session联接上再次使用临表得用drop table name;
B:如果起事务没有影响的话 ,还可以有一种方法,在创建之前起事务,然后后面在回滚,在回滚的时候会删掉临时表
http://topic.csdn.net/t/20050722/16/4161943.html
问题:
临时表(select * from XXX into Temp tempXXX)应该是基于Session的,只要我不断就可见,现在为了查询,创建了临时表,为了多次查询(不断开),会在查询结束后将创建的临时表 Drop掉,否则第二次创建临时表会报table已存在的错误。
Drop之前,我会判定一下是否TempTable真正存在,需要到哪里去判断?系统表中systables好像不保存Temp Table的信息?
我本来就是想Drop Table 在Inert Into前,当时不想产生错误,所以想直接查找看是否存在这个表,如果存在则Drop,但是系统表systables中不记录Temp Table的信息,所以才问到哪里可以查到?
当然通过错误处理也是一种处理方式,只是想问问Temp Table的信息存在哪里了?或者根本不保存?只是在内存中?反正释放Connection后Temp table就没有了。
网上的答案
A:一般我们写的时候每次生成之前都会drop下,否则可能会保958错误
B:发现如果在Trans中Rollback,临时表就没有创建,如果Commit,临时表会创建。现在采取的方法是,每次创建完毕后如果成功就记录,等操作完之后就判断,然后Drop临时表。
因为临时表是By Connetion的,如果你的Connetiong不变,into Temp ddd执行第二遍的时候就会出错。
估计你的程式都会每次查询时重新建立连接,查询完毕就释放连接,这样是不会有问题的。
存储过程应该也相当于一次Connetion,所以村储过程结束后,临时表会自动消亡。
C:在insert into temp table之前先做一个drop table 的动作不就可以解决你的问题了吗?
drop table tempxxx
select * form xx into tempxxx
如果没有tempxxx这个table存在,在drop table tempxxx的时候系统会报-206的错误
D:temp table不会保存,只是放在内存中
遇到同样的问题....
锁定老贴子 主题:Tomcat连接池原理讨论
http://www.iteye.com/topic/5347
分享到:
相关推荐
TEMP 参数指定是否创建临时表。 例: ```sql CREATE TABLE user (c0 serial NOT NULL, c1 char(10), c2 char(2), c3 smallint, c4 decimal(6,3), c5 date) IN “/usr/john/customer.dbs/user” ``` 六、修改表结构...
`TEMP`关键字用于创建临时表,表名和字段名必须唯一,指定`IN "pathname"`可以指定表的存储位置。 6. **修改表结构**: `ALTER TABLE`语句用于修改已存在的表结构,包括添加、删除和修改列: ```sql ALTER ...
`RENAME COLUMN`语句用于重命名表中的字段,如`RENAME COLUMN user.oldcolumn TO newcolumn;`。 总的来说,Informix SQL语句提供了全面的数据库管理功能,从创建和删除数据库,到操作表的结构和内容,每一步都需要...
- **功能描述**: 该命令用于删除指定的表,这意味着删除表中的所有数据、所有与该表相关的索引、对表的授权以及依赖于该表的视图等。 - **参数说明**: - `table_name`: 要删除的表的名称。 - **注意事项**: - ...
1. 联接查询:通过`JOIN`语句,可以合并多个表中的数据,Informix支持多种类型的JOIN操作。 2. 分组和聚合:`GROUP BY`和`HAVING`用于对数据进行分组和汇总,`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等聚合函数用于...
标题与描述均提到了"Informix Point in Time Table Level Restore",这涉及到IBM Informix数据库管理系统中的一个高级恢复特性——即点对点时间表级恢复(Point in Time Table-level Restore)。这种恢复技术允许...
5. **创建表**:`CREATE TABLE` 语句用于创建新表,`CREATE TEMP TABLE` 用于创建临时表。例如,`CREATE TABLE user (c0 SERIAL NOT NULL, c1 CHAR (10), c2 CHAR(2), c3 SMALLINT, c4 DECIMAL(6,3), c5 DATE) IN ...
对于同时具备实时交易和批量处理需求的表,在日结时需临时改为页锁,处理完毕后再恢复为行锁。表的锁模式可以在创建时设定,也可通过`ALTER TABLE`命令动态调整。 #### 二、SELECT语句优化技巧 优化SELECT语句是...
Connect是最基础的权限,允许用户执行SELECT、INSERT、UPDATE和DELETE语句,创建视图和临时表。Resource权限在此基础上增加了创建新表、ALTER和DROP自己创建的表,以及为这些表创建索引的能力。DBA权限最高,不仅...
9. **RENAME COLUMN**:更改表中某一列的名称。`table.oldcolumn`是旧列名,`TO newcolumn`是新列名。同样,此操作也需要相应的权限。例如:`RENAME COLUMN user.c1 TO name;` 以上只是Informix SQL语句的一部分,...
`TEMP`关键字创建临时表。例如: ```sql CREATE TABLE user( c0 SERIAL NOT NULL, c1 CHAR(10), c2 CHAR(2), c3 SMALLINT, c4 DECIMAL(6,3), c5 DATE ) IN "usr/john/customer.dbs/user"; ``` 6. **ALTER...