假设我在中运行了以下代码:
begin transaction
update Person set Name='Ian' where id=1
然后关闭studio管理器,并看到以下警告:
有一些未提交的事务。您想在关闭窗口之前提交这些事务吗?
如果我选择“是”,则事务将被提交。如果我选择“否”,那么它将被回滚。
如何与VB6/.NET程序一起工作?假设我有导致错误/异常的代码,事务既没有提交也没有回滚(应该是这样)。事务是否无限期地处于活动状态,还是有时间限制?事务是否已提交或回滚?
Update I编写了一个VB6程序,该程序:
1) Establishes a c
我正在尝试更好地理解“自动提交”的概念,当使用Postgres ( better )连接时。假设我有一个新的连接,将其隔离级别设置为ISOLATION_LEVEL_AUTOCOMMIT,然后直接运行此SQL,而不使用游标begin/rollback方法(作为练习,并不是说我真的想这样做):
INSERT A
INSERT B
BEGIN
INSERT C
INSERT D
ROLLBACK
插入C& D会发生什么?
自动提交是不是仅仅是BEGINs中的一个内部设置,它会影响问题的开始?在这种情况下,上述SQL不受影响;插入A和B在完成后立即提交,而C&D在事务中
当我创建连接时,我就设置了con.setAutoCommit(false);,这样在DB中就不会出现未提交的情况。但是,不管您的setAutoCommit()状态如何,如果您关闭连接,那么所有事务都将被提交。
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.7.5:xxxx:xxx", "xxx", "xxx");
c
我来自甲骨文背景,对Server有点困惑。
我希望停止Server自动提交我的插入命令。所以我正在使用begin transaction。在下面的演示中,我将在测试表中插入100行,并在事务结束时回滚。我期望的结果是90行(提交应该在30、60和90行),rest 10记录应该回滚。
CREATE TABLE test (TEST_ID INT);
GO
DECLARE @cnt INT=0;
BEGIN TRANSACTION t1;
WHILE @cnt < 100
BEGIN
INSERT INTO test values (@cnt);
SET @cnt += 1;
我现在正在从事Legacy项目,它需要对一些地方的低级JDBC有一些深入的了解,我看到的代码如下:
try {
con = ....
con.setAutoCommit(false);
//insert_1 pack to db
con.commit();
//insert_2 pack to db
con.commit();
//insert_3 pack to db
con.commit();
} catch (SQLException e) {
try {
con.rollback();
}
如果我没有在Derby中关闭一个打开的ResultSet,并且连接使用ResultSet.HOLD_CURSORS_OVER_COMMIT来保持,那么如果我调用:
connection.commit();
connection.rollback();
显式提交当前事务后调用rollback()是否有任何风险?我之所以这样问,是因为我发现在关闭连接之前,我总是必须调用rollback(),否则会得到一个异常:
java.sql.SQLException: Cannot close a connection while a transaction is still active.
我在Java中有一个A类,它调用B类中的另一个方法b,方法b进行提交。然后在A中,我尝试了2次捕获,如下所示:
try {
does a commit here
} catch (boom) {
does a rollback here
} catch(baam) {
does another rollback here
}
我想知道的是,第二次回滚是否取消了第一次回滚?与提交将var x更改为20一样,第一次回滚将var x更改为其原始值10,而第二次回滚将其更改为20?
我在Sqlplus中更新语句,并且没有提交代码。我正在使用出口进入终点站。
这只是一个简单的update语句,但我并没有提交代码。
示例:我使用用户名和密码连接到SQL Plus。
UPDATE USER SET Name='Daniel' WHERE Name='Francis';
exit
您可以指导我如何在另一个会话中提交,或者您是否可以更新可能的建议。
谢谢
我正在通过SqlBulkCopy插入数据,如下所示:
public void testBulkInsert(string connection, string table, DataTable dt)
{
using (SqlConnection con = new SqlConnection(connection))
{
con.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(con))
{
bulkCopy.DestinationTableN
创建连接+事务:
public SQLiteTransaction BeginTransaction()
{
var con = new SQLiteConnection(@"Data Source=A:\TransactionScopeTest\TransactionTest.db;Foreign Keys=ON");
con.Open();
var trans = con.BeginTransaction();
return trans;
}
使用相同主键值的2 sqlite插入
我工作的公司专门为所有数据库交互、选择、更新、删除使用存储过程(和一个本地的ORM)。
我们有许多procs将从表中插入和/或更新和/或删除。
当需要对整个proc进行“事务化”时,显然需要有我们的commit和rollback语句。
问题从何而来。
当一个事务中有多个语句需要一起提交或回滚时,我们显然会抛出一个try/catch块。
让我们假设脚本的这个示例场景:
set nocount on
create table #test
(
id int primary key identity(1,1),
col varchar(2) not null,
y int n
我正在使用后端的Server 2014在一些现有应用程序中工作。我发现提交事务的模式如下
USE AdventureWorks;
GO
BEGIN TRANSACTION;
GO
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 10;
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 11;
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 12;
GO
COMMIT
我正在从BoneCP迁移到HikariCP。在BoneCP中有以下选项:
# If true, issue a reset (rollback) on connection close in case client forgot it.
resetConnectionOnClose=true
在这种情况下,当连接在没有显式提交/回滚事务的情况下关闭时,HikariCP的行为是什么?我没有找到等效的配置选项。
谢谢你,加布