資料庫事務sql
Ⅰ 資料庫(sql server )回滾事務
--開始一個事務處源理
Begin Tran T1
--執行插入操作
insert into [選課表]([學號],[課程代碼]) values('20100021','01');
insert into [選課表]([學號],[課程代碼]) values('20100021','02');
insert into [選課表]([學號],[課程代碼]) values('20100021','03');
--判斷同一學號的選課數量是否符合
IF(select count([學號]) as cnt from [選課表] where [學號]='20100021')>4
BEGIN
--不符合,回滾事務
rollback Tran T1
END
ELSE
BEGIN
--符合,提交事務
commit Tran T1
END
Ⅱ sqlserver中事務的作用是什麼
sql server中事務的作用是如果任何一個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態,或者是上個節點。為了確保要麼執行,要麼不執行,就可以使用事務。是指訪問並可能更新資料庫中各種數據項的一個程序邏輯執行單元(unit)。
(2)資料庫事務sql擴展閱讀:
事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin transaction和end transaction語句(或函數調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。
一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
Ⅲ SQL中事務有幾種
分為:
自動提交事務,顯式事務,隱性事務
事務
事務是單個的工作單元。如果某一事務成功,則在該事務中進行的所有數據更改均會提交,成為資料庫中的永久組成部分。如果事務遇到錯誤且必須取消或回滾,則所有數據更改均被清除。
自動提交事務
每條單獨的語句都是一個事務。
顯式事務
每個事務均以
BEGIN
TRANSACTION
語句顯式開始,以
COMMIT
或
ROLLBACK
語句顯式結束。
隱性事務
在前一個事務完成時新事務隱式啟動,但每個事務仍以
COMMIT
或
ROLLBACK
語句顯式完成。
Ⅳ SQL事務
SQL中沒有像 DELPHI 那樣 TRY Finnal 的方式,通常都是這樣寫:
--判斷表的存在性
If NOT Exists(select * from dbo.sysobjects where name='sysobjects')
--自定義錯誤號,說明表不存在。
Return -1
--執行查詢
select * from table1
--有錯誤反回錯誤號
If @@Error<>0
Return @@Error
--正確反回0
Return 0
--補充回答
在Sql Server中,是沒有象開發工具那種的容錯處理,他有的只是判斷對象的存在性及用事務來解決數據的完整性、一致性等等。但通用的做法都是在可能發生錯誤的地方設置錯誤處理或反回錯誤號,自定義的也可以。這樣在程序里我們可以捕獲錯誤號來進行相應的錯誤提示。
--補充回答
「多人同時訪問時一旦某個事務永久鎖定了一個表,那其它人都無法訪問了」你說的這個問題是資料庫對象鎖定問題,跟你提問的問題有所區別,資料庫對象鎖定實質是由DBMS完成的,如果對象真的被鎖定了的話,只有在對象被解鎖以後才能對其進行操作,當然能進行什麼樣的操作也跟鎖的類型及類度相關。開發者對對象進行加鎖,也要分不同操作進行,操作完成後DBMS會自動解鎖。
如果出現像你說的死所現像的話,DBMS是不能完成解鎖功能的,只有人工進行處理了。
至於你提出的問題,你的想法是好的,但是DBMS都是通過提前判斷來進行容錯的,或者拋出錯誤號在程序中進行捕獲處理。
Ⅳ 關於SQL資料庫事務的提交問題
如果第二種寫法取得@@error值後僅僅執行不帶附加選項的rollback操作的話,與第一種寫法是沒有什麼區別的,都會回滾的事務的開始,也就是begin transaction開始的位置。
如果在rollback中指定了回滾到某個保存點,那麼肯定就跟第一種寫法有區別了。我們可以在事務執行某些操作後設置一個或多個保存點,這樣就可以使事務回滾到指定的保存點,而不必全部回滾。
Ⅵ SQL事務的概念,四個特性
(1):事務(transaction)是並發控制的單位,是用戶定義的一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。通過事務,sql
server能將邏輯相關的一組操作綁定在一起,以便伺服器保持數據的完整性。
(2):事務通常是以begin
transaction開始,以commit或rollback結束。
commit表示提交,即提交事務的所有操作。具體地說就是將事務中所有對資料庫的更新寫回到磁碟上的物理資料庫中去,事務正常結束。
rollback表示回滾,即在事務運行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對資料庫的所有以完成的操作全部撤消,滾回到事務開始的狀態。
(3):事務運行的三種模式:
a:自動提交事務
每條單獨的語句都是一個事務。每個語句後都隱含一個commit。
b:顯式事務
以begin
transaction顯式開始,以commit或rollback顯式結束。
c:隱性事務
在前一個事務完成時,新事務隱式啟動,但每個事務仍以commit或rollback顯式結束。
(4):事務的特性(acid特性)
a:原子性(atomicity)
事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。
b:一致性(consistency)
事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
c:隔離性(isolation)
一個事務的執行不能被其他事務干擾。
d:持續性/永久性(rability)
一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。
注:事務是恢復和並發控制的基本單位。
((1)是回答事務的概念到底是什麼——即你的提問,至於(2)、(3)、(4)只是作的稍許補充而已,不必深究,呵呵……)
Ⅶ SQL事務概念
(1):事務(Transaction)是並發控制的單位,是用戶定義的一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。通過事務,SQL Server能將邏輯相關的一組操作綁定在一起,以便伺服器保持數據的完整性。
(2):事務通常是以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結束。
COMMIT表示提交,即提交事務的所有操作。具體地說就是將事務中所有對資料庫的更新寫回到磁碟上的物理資料庫中去,事務正常結束。
ROLLBACK表示回滾,即在事務運行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對資料庫的所有以完成的操作全部撤消,滾回到事務開始的狀態。
(3):事務運行的三種模式:
A:自動提交事務
每條單獨的語句都是一個事務。每個語句後都隱含一個COMMIT。
B:顯式事務
以BEGIN TRANSACTION顯式開始,以COMMIT或ROLLBACK顯式結束。
C:隱性事務
在前一個事務完成時,新事務隱式啟動,但每個事務仍以COMMIT或ROLLBACK顯式結束。
(4):事務的特性(ACID特性)
A:原子性(Atomicity)
事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。
B:一致性(Consistency)
事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
C:隔離性(Isolation)
一個事務的執行不能被其他事務干擾。
D:持續性/永久性(Durability)
一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。
注:事務是恢復和並發控制的基本單位。
((1)是回答事務的概念到底是什麼——即你的提問,至於(2)、(3)、(4)只是作的稍許補充而已,不必深究,呵呵……)
Ⅷ sql事務!!
A. 命名事務
以下示例顯示如何命名事務。
復制
DECLARE @TranName VARCHAR(20);
SELECT @TranName = 'MyTransaction';
BEGIN TRANSACTION @TranName;
USE AdventureWorks;
DELETE FROM AdventureWorks.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION @TranName;
GO
B. 標記事務
以下示例顯示如何標記事務。將標記事務 CandidateDelete。
復制
BEGIN TRANSACTION CandidateDelete
WITH MARK N'Deleting a Job Candidate';
GO
USE AdventureWorks;
GO
DELETE FROM AdventureWorks.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION CandidateDelete;
GO
參照MSDN
Ⅸ sql中什麼是事務啊
事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。
事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin transaction和end transaction語句(或函數調用)來界定。
(9)資料庫事務sql擴展閱讀
事務類型
(1)手動事務
手動事務允許顯式處理若干過程,這些過程包括:開始事務、控制事務邊界內的每個連接和資源登記、確定事務結果(提交或中止)以及結束事務。
(2)自動事務
.NET 頁、XML Web services方法或 .NET Framework 類一旦被標記為參與事務,它們將自動在事務范圍內執行。您可以通過在頁、XML Web services 方法或類中設置一個事務屬性值來控制對象的事務行為。