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

sql设置事务

发布时间: 2022-04-22 14:36:45

sql事务概念是什么,举个例子说明什么样的东西是事务,与程序又有何区别,

数据库事务是构成单一逻辑工作单元的操作集合。

举例:转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:

1、将A账户的金额减少100元

2、将B账户的金额增加100元。

与程序的区别:一个程序中包含多个事务。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

(1)sql设置事务扩展阅读:

事务必须具备四个属性,简称ACID属性:

1、原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。

2、一致性(Consistency):当事务完成时,数据必须处于一致状态。

3、隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。

4、永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

⑵ 我是一个初学者,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语句自动提交

⑶ 如何利用SQL Server 2012数据库操作事务管理

一、启用FileTable
1、修改数据库引擎的属性
打开“SQL Server配置管理器”,修改SQL Server数据库引擎的属性。使用此页可针对此 Microsoft SQL Server 2012安装启用 FILESTREAM。

(1)针对 Transact-SQL 访问启用 FILESTREAM
选中此项可针对 Transact-SQL 访问启用 FILESTREAM。 必须选中此控制选项,才能使用其他控制选项。如果不启用此选项,就不能添加FileStream文件组。
(2)针对文件 I/O 流访问启用 FILESTREAM
选中此项可针对 FILESTREAM 启用 Win32 流访问。
(3)Windows 共享名
使用此控制选项可输入将用来存储 FILESTREAM 数据的 Windows 共享的名称。默认为该SQL Server实例的名称。
(4)允许远程客户端针对 FILESTREAM 数据启用流访问
选中此控制选项可允许远程客户端访问此服务器上的此 FILESTREAM 数据。

2、修改服务器的属性
打开“SQL Server Management Studio”,修改该实例的配置。默认配置如下:

上述选项解释如下:
(1)“FILESTREAM 访问级别”显示 SQL Server 实例上支持的 FILESTREAM 的当前级别。若要更改访问级别,请选择以下值之一:
已禁用
无法将二进制大型对象 (BLOB) 数据存储在文件系统中。此为默认值。即filestream access level=0
已启用 Transact-SQL 访问
可使用 Transact-SQL 访问 FILESTREAM 数据,但不能通过文件系统进行访问。即filestream access level=1
已启用完全访问
FILESTREAM 数据可使用 Transact-SQL 以及通过文件系统进行访问。即filestream access level=0
注意:在首次启用 FILESTREAM 时,您可能需要重新启动计算机才能配置驱动程序。
(2)“FILESTREAM 共享名称”显示在安装过程中选择的 FILESTREAM 共享的只读名称。

在本次实验中,我们将“FILESTREAM 访问级别” 设定为:已启用完全访问。
如果是通过T-SQL脚本执行,则运行以下脚本:
EXEC sys.sp_configure N'filestream access level', N'2'
RECONFIGURE WITH OVERRIDE

注意:设置完成之后,重启实例。

3、配置防火墙
若要在防火墙保护的环境中使用 FILESTREAM,客户端和服务器都必须能够将 DNS 名称解析为包含 FILESTREAM 文件的服务器。FILESTREAM 要求 Windows 文件共享端口 139 和 445 处于打开状态。

二、配置文件组
1、添加文件组
完成上述操作之后,就可以为该数据库添加专用于FileStream的文件组。

如果是通过脚本操作,请运行以下脚本:
ALTER DATABASE [db01] ADD FILEGROUP [FileStreamFileGroup] CONTAINS FILESTREAM

2、添加文件
完成上述操作之后,就可以为该数据库添加FilStream类型的数据库文件。

在本例中,系统并没有为“FileStream数据”的文件类型创建mdf或ndf文件,而是在文件夹C:\SqlData下面自动创建以逻辑名称命名的文件夹,即 C:\SqlData\FileData。其中filestream.hdr 文件是 FILESTREAM 容器的头文件。当这个数据库被删除时,mdf、ndf、log连同这个文件夹都会被删除。

如果是通过脚本操作,请运行以下脚本:
ALTER DATABASE [db01] ADD FILE ( NAME = N'FileData', FILENAME = N'C:\SqlData\FileData' ) TO FILEGROUP [FileStreamFileGroup]
注意:在上例中,在运行脚本之前,必须存在C:\SqlData,建议使用右侧的选择按钮选择路径。如果路径不存在,就会报错:

同时不能存在重复的文件夹,即不能存在C:\SqlData\FileData。否则也会报错:

3、启动非事务访问
FileTable 使 Windows 应用程序可以获取 FILESTREAM 数据的 Windows 文件句柄而不需要 SQL Server 事务。为了允许对 SQL Server 中存储的文件进行此非事务性访问,必须为要包含 FileTable 的每个数据库在数据库级别上指定所需的非事务性访问级别。

选项解释如下:
(1)FILESTREAM 非事务访问
为从文件系统到 FileTables 中存储的 FILESTREAM 数据的非事务性访问指定以下选项之一:OFF、READ_ONLY 或 FULL。
如果在服务器上未启用 FILESTREAM,则该值将设置为 OFF 并且被禁用。在本次实验中,将其设置为FULL。
(2)FILESTREAM 目录名称
为与所选数据库相关联的 FILESTREAM 数据指定目录名称。在 FileTable 文件夹层次结构中,此数据库级目录将成为在实例级别为 FILESTREAM 指定的共享名称的子级以及在数据库中创建的 FileTable 的父级。
如果启用非事务性访问时没有提供目录名称,则在以后必须提供它,这样才能在数据库中创建 FileTable。

如果是通过脚本执行,如下:
ALTER DATABASE db01
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ImageFiles' )
注意:更改现有数据库时,调用带 DIRECTORY_NAME FILESTREAM 选项的 ALTER DATABASE (Transact-SQL) 语句。使用这些选项更改目录名称时,数据库必须以独占方式锁定,没有打开的文件句柄。

说明:为检查是否在数据库上启用了非事务性访问,可以查询目录视图,脚本如下:
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options

三、创建FileTable
1、创建第一个FileTable
“SQL Server Management Studio”只提供一个脚本模板,要想创建FileTable还是得用脚本完成:
USE db01
CREATE TABLE ImageTable1 AS FILETABLE
官方的范本为:
USE [db01]
CREATE TABLE [dbo].[ImageTable1] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFileGroup]
WITH
(FILETABLE_DIRECTORY = N'ImageTable1', FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)

2、创建第二个FileTable
CREATE TABLE ImageTable2 AS FILETABLE

3、获取共享路径
文件表创建之后,就会相应的产生一个文件表共享目录,该目录路径可以通过内建函数获取:
SELECT FileTableRootPath('ImageTable1')
本次实验所返回的结果为:\\SQL1\SqlFile\ImageFiles\ImageTable1

4、查看
通过Windows资源管理器,可见已经创建了以GUID命名的文件夹。

通过SQL Server Management Studio,查看表的结构。

四、操作
1、向文件夹中添加文件
通过 “Windows资源管理器”,向文件夹\\SQL1\SqlFile\ImageFiles\ImageTable1中添加一个文件A01.GIF。然后运行脚本:
select * from ImageTable1
结果如下:

可见, SQL Server自动在Table中添加了记录。

2、文件改名
运行以下脚本:
update ImageTable1 set name='Cup.GIF' where name='A01.GIF'
通过“Windows资源管理器”,查看文件夹\\SQL1\SqlFile\ImageFiles\ImageTable1,可见文件A01.GIF已经被改名为Cup.GIF 。

3、查看共享文件夹
我们可以继续复制其他文件,然后通过“Windows资源管理器”,查看文件夹。

4、删除文件
可以使用脚本删除,例如:
Delete ImageTable1 where name='Cup.GIF'
或者,通过“Windows资源管理器”直接删除该文件。

五、备份和还原

1、备份数据库
使用 SQL Server 备份数据库时,FILESTREAM 数据将与数据库中的结构化数据一起备份。

2、部分备份
如果不想将 FILESTREAM 数据与关系数据一起备份,则可以使用部分备份将 FILESTREAM 文件组排除在外。

⑷ 如何编写SQL事务

给你一个参考的sql吧:

--创建帐户表bank--
if exists(select* from sysobjects where name='bank')
drop table bank
create table bank
(
customerName char(10), --顾客姓名
currentMoney money --当前余额
)
go
/**//*--添加约束,帐户不能少于元--*/
alter table bank add
constraint CK_currentMoney check(currentMoney>=1)
/**//*--插入测试数据--*/
insert into bank(customerName,currentMoney)
select '张三',1000 union
select '李四',1

select * from bank
go

/**//*--使用事务--*/
use stuDB
go
--恢复原来的数据
--update bank set currentMoney=currentMoney-1000 where customerName='李'
set nocount on --不显示受影响的行数
print '查看转帐事务前的余额'
select * from bank
go

/**//*--开始事务--*/
begin transaction
declare @errorSum int --定义变量,用于累计事务执行过程中的错误
/**//*--转帐--*/
update bank set currentMoney=currentMoney-800 where customerName='张三'
set @errorSum=@errorSum+@@error --累计是否有错误
update bank set currentMoney=currentMoney+800 where customerName='李四'
set @errorSum=@errorSum+@@error --累计是否有错误

print '查看转帐事务过程中的余额'
select * from bank

/**//*--根据是否有错误,确定事务是提交还是回滚--*/
if @errorSum>0
begin
print '交易失败,回滚事务.'
rollback transaction
end
else
begin
print '交易成功,提交事务,写入硬盘,永久保存!'
commit transaction
end
go

print '查看转帐后的余额'
select * from bank
go

⑸ SQL中事务有几种

有三种。第一种是显式声名的事务,这种事务要以begin
transaction为事务的起始标志。第二种是自动提交事务,这是sql
server的缺省设置。每一个t-sql语句在执行完成后会被自动提交。第三种是隐含事务,在这种方式下,sql
server会在当前事务被提交或回滚后自动启动一个新的事务,这个新事务直到用户执行commit或rollback为止,这时系统又会启动一个新事务。这样就形成了一个连续的事务链。

⑹ SQL Server中事务处理怎么用

BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
事务处理可以将一组操作视为一个整体,只有全部
语句
都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
BeginTrans和CommitTrans用于
标记
事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有
错误
发生,事务处理失败。Error集合中的每一个Error对象,代表一个
错误信息

⑺ 在SQL中怎样使用事务

SQL Server 需要显示的定义 开始一个事务.
BEGIN TRANSACTION;

例如:
1> BEGIN TRY
2> -- SQL Server 需要显示的定义 开始一个事务.
3> BEGIN TRANSACTION;
4> -- 插入2条同样的数据,使主键重复,引发错误后回滚事务.
5> INSERT INTO test_main(id, value) VALUES (4, 'FOUR');
6> INSERT INTO test_main(id, value) VALUES (4, 'FOUR');
7> -- 执行成功后,需要提交事务.
8> COMMIT;
9> END TRY
10> BEGIN CATCH
11> PRINT('Main.错误代码 = ' + STR(ERROR_NUMBER()));
12> PRINT('Main.错误严重级别 = ' + STR(ERROR_SEVERITY()));
13> PRINT('Main.错误状态代码 = ' + STR(ERROR_STATE()));
14> PRINT('Main.错误信息 = ' + ERROR_MESSAGE());
15> -- 回滚事务
16> ROLLBACK;
17> END CATCH
18>
19> go

⑻ sql如何创建事务或设置外键

可以用一个触发器:
create trigger tri_stu
on 地址表
for update
as
declare @id int
declare @address varchar(20)
select @id=id,@address=address from inserted
update 学生表 set address=@address where [email protected]是2个表相关联的列

建外键:
alter table 外键表
add constraint fk_stu
foreign key(外键列) references 主键表(主键列)

⑼ sql中什么是事务啊

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。

(9)sql设置事务扩展阅读

事务类型

(1)手动事务

手动事务允许显式处理若干过程,这些过程包括:开始事务、控制事务边界内的每个连接和资源登记、确定事务结果(提交或中止)以及结束事务。

(2)自动事务

.NET 页、XML Web services方法或 .NET Framework 类一旦被标记为参与事务,它们将自动在事务范围内执行。您可以通过在页、XML Web services 方法或类中设置一个事务属性值来控制对象的事务行为。

⑽ SQL Server启动事务有几种方式

有三种。第一种是显式声名的事务,这种事务要以BEGIN TRANSACTION为事务的起始标志。第二种是自动提交事
务,这是SQL Server的缺省设置。每一个T-SQL语句在执行完成后会被自动提交。第三种是隐含事务,在这种方式下,
SQL Server会在当前事务被提交或回滚后自动启动一个新的事务,这个新事务直到用户执行COMMIT或ROLLBACK为止,这时系
统又会启动一个新事务。这样就形成了一个连续的事务链。

问:Cluster Index和Noncluster Index的区别是什么?

答:Cluster Index和Noncluster Index的结构都是平衡树。它们的主要区别是Cluster Index的叶子节点是DATA PAGE
而Noncluster Index的叶子节点是数据在DATA PAGE中的指针。

问:在SQL Server6.5,7.0中能否修改Table的名字?

答:可以使用SP_RENAME来修改Table的名字。

例如:

use pubs

create table test( a char(10))

sp_rename test,newtest

这个例子将新建的名为test的Table改为newtest。

问:修改SQL Server7.0所在机器的机器名后,不能启动SQL Server,这种情况该如何处理?

答:在这种情况下,要运行SQL Server7.0 Setup程序。Setup程序会根据新的机器名重新设置SQL Server。

问:如果没有成功的安装SQL Server7.0,我该怎么办?

答:如果您没有成功的安装SQLServer7.0,有几个文件可以帮助您确定是那一步出的错。首先在Windows目录下的
SQLstp.log文件包含有setup过程的详细信息。查看这个文件可以确定Setup是在那一步出错的。

如果Setup过程是在配置的部分出错,那么查看在MSSQL7\Log目录下的错误日志和在MSSQL7\Install目录下的
Cnfgsvr.out文件。SQLServer7.0Setup运行一个名为Cnfgsvr.exe的应用程序来配置SQLServer。这个程序启动SQLServer,
连接SQLServer并运行初始安装脚本。在这一过程中出现的任何错误都会被写入Cnfgsvr.out文件。