sql序列(5)事务
1,场景:几个操作必须作为同一个单元同时成功或者失败,就应该使用事务
2,事务的四个属性(ACID):
原子性:把事务看作是一个单一动作,而不是各个操作的集合
一致性:事务无论成功与否,都让数据库处于一致状态
孤立性:每个事务都有明确的界限,一个事务不影响其他运行的事务
持续性:事务中的数据修改,将永久保持在系统中
3,事务的描述:
BEGIN TRANSACTION //开始事务
COMMIT TRANSACTION //提交事务
COMMIT WORK
ROLLBACK TRANSACTION //回滚事务
ROLLBACK WORK
SET IMPLICIT_TRANSACTIONS
4,创建事务
语句1:
================================================
BEGIN TRANSACTION
UPDATE USERS SET ID = 2 WHERE ID = 1;
if(@@error<>0) //判断是否报错如果报错就回滚信息否则提交事务
BEGIN
ROLLBACK TRANSACTION
END
elseu
BEGIN
COMMIT TRANSACTION
END
5,使用事务
语句2:
================================================
try
{
SqlTransaction st = null;
using(SqlConnection con = new SqlConnection(''数据库连接串))
{
con.Open();
st = con.BeginTransaction();
SqlCommand cmd = con.CreateCommand()
cmd.CommandText = '<INSERT T-SQL>';
cmd.TRANSACTION = st;
SqlCommand cmd_2 = con.CreateCommand()
cmd_2.CommandText = '<DELETE T-SQL>';
cmd_2.TRANSACTION = st;
cmd.ExecuteNonQuery();
cmd_2.ExecuteNonQuery();
st.COMMIT();
}
}
catch(Exception ex)
{
st.ROLLBACK();
}
【附件:】
1,XML格式展示结果数据:
语句1:
========================================================
SELECT * FROM USERS FOR XML RAW
语句2:
========================================================
SELECT * FROM USERS FOR XML RAW, ELEMENTS
语句3:
========================================================
SELECT * FROM USERS FOR XML AUTO
2,存储xml流程
2.1:创建存储xml的表
语句4:
========================================================
CREATE TABLE XML_L
(
XID INT NOT NULL PRIMARY KEY,
XDOC XML NOT NULL
)
INSERT INTO XML_L VALUES(1, '<USERS><USER><ID>1</ID><NAME>L</NAME></USER></USERS>')
SELECT * FROM XML_L