当前位置:首页 » 编程语言 » sql开启事务代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql开启事务代码

发布时间: 2023-01-30 12:21:07

sql Server启动事务有几种方式

有三种。第一种是显式声名的事务,这种事务要以BEGIN
TRANSACTION为事务的起始标志。第二种是自动提交事
务,这是SQL
Server的缺省设置。每一个T-SQL语句在执行完成后会被自动提交。第三种是隐含事务,在这种方式下,
SQL
Server会在当前事务被提交或回滚后自动启动一个新的事务,这个新事务直到用户执行COMMIT或ROLLBACK为止,这时系
统又会启动一个新事务。这样就形成了一个连续的事务链。
答:Cluster
Index和Noncluster
Index的结构都是平衡树。它们的主要区别是Cluster
Index的叶子节点是DATA
PAGE
而Noncluster
Index的叶子节点是数据在DATA
PAGE中的指针。
答:可以使用SP_RENAME来修改Table的名字。
例如:use
pubscreate
table
test(
a
char(10))
sp_rename
test,newtest
这个例子将新建的名为test的Table改为newtest。
答:在这种情况下,要运行SQL
Server7.0
Setup程序。Setup程序会根据新的机器名重新设置SQL
Server。
答:如果您没有成功的安装SQLServer7.0,有几个文件可以帮助您确定是那一步出的错。首先在Windows目录下的
SQLstp.log文件包含有setup过程的详细信息。查看这个文件可以确定Setup是在那一步出错的。
如果Setup过程是在配置的部分出错,那么查看在MSSQL7\Log目录下的错误日志和在MSSQL7\Install目录下的
Cnfgsvr.out文件。SQLServer7.0Setup运行一个名为Cnfgsvr.exe的应用程序来配置SQLServer。这个程序启动SQLServer,
连接SQLServer并运行初始安装脚本。在这一过程中出现的任何错误都会被写入Cnfgsvr.out文件。

⑵ 我是一个初学者,SQL怎么写事务请高手帮帮忙!!!!

事务控制语句 (transaction)
事务就是一系列的操作,要么同时完成,要么不完成
都是由一个dml语句开始的

updata emp2 set sal=sal*2;
delete from dept2;
insert into salgrade values (6,10000,20000);
//这样是一个transaction语句,如果使用rollback;返回,则上面三条语句将不起任何作用
transaction语句的结束为 1.rollback transaction语句结束.
2.commit;提交完成,transaction语句结束
3.执行ddl,或则dcl语句事务自动提交.
4.当用户正常断开连接时,transcation自动提交
5.当用户非正常断开连接时,Oracle自动执行rollback;语句
如:select * from dept2; //transcation开始
create table t (a varchar2(20));//执行了ddl语句,则transcation语句自动提交

⑶ ASP.NET ADO.NET 求通用C#事务代码, 基于Sql

petshop里面就有哈,很经典。
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(ArrayList SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection=conn;
SqlTransaction tx=conn.BeginTransaction();
cmd.Transaction=tx;
try
{
for(int n=0;n<SQLStringList.Count;n++)
{
string strsql=SQLStringList[n].ToString();
if (strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch(System.Data.SqlClient.SqlException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}

⑷ SQL语言中,用于事务回开始的语句是什么

--开启事务
begin tran
--执行操作
update Accounts_UsersExp set TelPhone=123456 where userid=14
--执行错误事务回滚
rollback
--如果正确进行事务提交
commit

⑸ 如何开启mysql的事务支持

看你是什么事务,jdbc事务,还是分布式事务,还是容器事务

1,编程式事务管理(jdbc的事务是绑定在connection上的)

Connection conn = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:SID","username","password");
conn.setAutoCommit(false); //取消自动提交
PreparedStatement ps = conn.prepareCall("update something");
ResultSet rs = ps.executeQuery();
conn.commit(); //手动提交

}
catch (Exception e)
{
conn.rollback();
e.printStackTrace();
}
finally
{
conn.close();
}

2,声明式事务
先在工程的application.xml配置文件中添加如下代码,开启事务

<!-- 声明式事务控制配置 -->
<tx:annotation-driven transaction-manager="txManager"/>

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="datasource" ref="bassDataSource"></property>
</bean>
然后在你需要开启事务的接口前面添加注解
@Transactional(rollbackFor = IOException.class)
public void add(String name) throws IOException
{
System.out.println("可以再类里和方法里面添加事务注解0~0");
throw new IOException();
}
直接调用接口方法就好

分布式事务处理(mysql貌似在5.X之后才支持) 的话,
1.可以直接使用spring+atomikos框架进行管理
参考:http://blog.chinaunix.net/uid-21162795-id-3424973.html
就不贴测试代码了,自己看着配置吧

2,使用JTA(Java Transaction API)进行分布式事务管理(测试代码如下)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

//分布式事务处理
public class transferAccount
{
@SuppressWarnings("null")
public void testTransferAccount()
{
UserTransaction userts = null;
Connection connA = null;
PreparedStatement psA = null;
InitialContext context = null;
Connection connB = null;
PreparedStatement psB = null;

try
{
//获得事务管理对象
userts = (UserTransaction) context.lookup("java:comp/UserTransaction");
//获取两个数据库
connA = getDataSourceA().getConnection();
connB = getDataSourceB().getConnection();
//开启事务
userts.begin();
//sql语句
psA = connA.prepareStatement("我加1");
psB = connB.prepareStatement("我减1");
//执行sql
psA.executeUpdate();
psB.executeUpdate();
//事务提交
userts.commit();

} catch (Exception e)
{
try
{
userts.rollback();
} catch (IllegalStateException | SecurityException
| SystemException e1)
{
e1.printStackTrace();
}
e.printStackTrace();
}
finally
{
try
{
psA.close();
psB.close();
connA.close();
connB.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}

public DataSource getDataSourceA()
{
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setDatabaseName("mysql");
dataSource.setServerName("server");
dataSource.setPortNumber(1433);
dataSource.setUser("test");
dataSource.setPassword("test");
return dataSource;
}

public DataSource getDataSourceB()
{
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setDatabaseName("mysql");
dataSource.setServerName("server");
dataSource.setPortNumber(1435);
dataSource.setUser("test1");
dataSource.setPassword("test1");
return dataSource;
}
}