Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在sybase中提交事务的临时表_Java_Sql_Sybase - Fatal编程技术网

Java 在sybase中提交事务的临时表

Java 在sybase中提交事务的临时表,java,sql,sybase,Java,Sql,Sybase,我正在使用sybase临时表方法表名进行批量插入。这在事务中发生。但是,此操作正在提交数据事务。我没有做任何连接。请承诺。我不希望发生这种提交,因为我以后可能不得不回滚整个事务。知道为什么insert using temp table在提交事务时会被询问吗?。如何解决此问题 sql有点像 select * into #MY_TABLE_BUFFER from MY_TABLE where 0=1; load table #MY_TABLE_BUFFER from 'C:\temp\123.tm

我正在使用sybase临时表方法表名进行批量插入。这在事务中发生。但是,此操作正在提交数据事务。我没有做任何连接。请承诺。我不希望发生这种提交,因为我以后可能不得不回滚整个事务。知道为什么insert using temp table在提交事务时会被询问吗?。如何解决此问题

sql有点像

select * into #MY_TABLE_BUFFER from MY_TABLE where 0=1; 
load table #MY_TABLE_BUFFER from 'C:\temp\123.tmp' WITH CHECKPOINT ON; 
insert into MY_TABLE on existing update select * from #MY_TABLE_BUFFER; 
drop table #MY_TABLE_BUFFER; 
我使用statement.executeUpdate来执行它

发现这是由于临时表未参与事务并执行提交。
有什么解决方法吗?

Sybase很有趣,它将用户指定的aka显式事务与临时表结合使用,而临时表是在事务中创建的。不管是好是坏,Sybase认为创建临时表(包括通过“select into”语句)是tempdb上下文中的DDL语句。在编辑器中,w/default server/db settings,执行此操作时将出现错误

作为测试,您可以尝试将tempdb数据库上下文中的“ddl in tran”设置设置为true。然后,查看行为是否发生变化

但是,请注意,根据Sybase文档,永久保留该设置是一个坏主意。我只是为了调查的目的才提出来的


如果我对问题的假设是正确的,那么真正的解决方案可能是首先创建临时表,然后开始事务,避免事务范围内的任何DDL STMT。

Sybase很有趣,它将用户指定的aka显式事务与临时表结合使用,在事务中创建临时表的地方使用临时表。不管是好是坏,Sybase认为创建临时表(包括通过“select into”语句)是tempdb上下文中的DDL语句。在编辑器中,w/default server/db settings,执行此操作时将出现错误

作为测试,您可以尝试将tempdb数据库上下文中的“ddl in tran”设置设置为true。然后,查看行为是否发生变化

但是,请注意,根据Sybase文档,永久保留该设置是一个坏主意。我只是为了调查的目的才提出来的


如果我对问题的假设是正确的,那么真正的解决方案可能是首先创建临时表,然后开始事务,以避免事务范围内的任何DDL stmt。

sp_dboption tempdb,'DDL in tran',true


上述方法可以工作,即使是在使用anymode创建proc时,我也无法创建/更新表。

sp_dboption tempdb,'ddl in tran',true


以上都可以工作,即使我也无法在使用anymode创建proc时创建/更新表。

请向我们展示一些代码并正确设置其格式。您是否设置为false?您说您使用statement.executeUpdate。你从其他代码中调用它吗?例如,来自Java?@cularis。对设置为false。@尼瓦斯是的。从java代码中请给我们看一些代码并正确格式化。您是否设置为false?您说您使用statement.executeUpdate。你从其他代码中调用它吗?例如,来自Java?@cularis。对设置为false。@尼瓦斯是的。来自java代码