㈠ 請問:提交一個事務採用的sql動詞為
SQL的事務具有原子性,一個不可分割的整體,要麼都提交,要麼都失敗。
您問到的提交的動詞為:commit,以確認自己的更新;
而如果不想進行提交,可以用rollback進行回滾;
當然前提是對DML語句(數據操縱語言,如insert,update等),
對DDL(數據定義語言,如create等)是無效的,因為DDL語句包含commit的意思。
希望回答讓您滿意。
㈡ SQL中如何去事務提交之前的數據
修改前的數據在inserted表裡,修改後的數據在deleted表裡。。比如你修改了id欄位,修改前的值為:select id from inserted 修改後的值為:select id from deleted
觸發器的代碼就自己去寫好吧?
㈢ 關於SQL資料庫事務的提交問題
如果第二種寫法取得@@error值後僅僅執行不帶附加選項的rollback操作的話,與第一種寫法是沒有什麼區別的,都會回滾的事務的開始,也就是begin transaction開始的位置。
如果在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語句時也要以事務的方式提交
事務是單個的工作單元。如果某一事務成功,則在該事務中進行的所有數據修改均會提交,成為資料庫中的永久組成部分。如果事務遇到錯誤且必須取消或回滾,則所有數據修改均被清除。
事務使用,可以提供一個機制,防止在執行過程中出錯而之前正確的sql有影響了資料庫的情況出現。
㈥ 關於sql中的事務回滾問題 ,就是commit 和 rollback的順序問題
begin try 和 end try捕獲產生的錯誤
然後在begin catch 和 end catch 塊中使用rollback語句讓事務回滾
你可以簡單地先寫個小例子試一下,體會下rollback的用法
比如:
begin tran
update table2 set b=10,c=10 where a=1
rollback tran
就會發現數據沒有被更新
然後再結合begin try end try begin catch end catch的用法
就能實現在事務執行過程中出錯後回滾的功能
大概的形式就是這樣:
begin tran
begin try
--做相關操作
--結束的時候如果沒有錯誤則用commit提交事務
commit tran
end try
begin catch
--出現錯誤的時候會跳轉到這里
--用rollback回滾事務
rollback tran
end catch
㈦ sql server事務提交
select * from table with(holdlock);
with關鍵字來設置鎖表的方式
TABLOCKX(排它表鎖)
此選項被選中時,SQL Server 將在整個表上置排它鎖直至該命令或事務結束。這將防止其他進程讀取或修改表中的數據
你使用排它鎖吧,TABLOCK鎖其他進程還能讀取數據但是不能修改,看你的意思連別的進程讀取也不讓,使用排它表鎖吧.
JSP提交SQL語句的時候使用就可以
㈧ sql server 中的事務處理控制語句怎樣進行實現提交一個事務
--開始一個事務Begin tran--提交一個事務Commit tran--回滾一個事務Rollback Tran
㈨ sql中什麼是事務啊
事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。
事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin transaction和end transaction語句(或函數調用)來界定。
(9)sql提交事物擴展閱讀
事務類型
(1)手動事務
手動事務允許顯式處理若干過程,這些過程包括:開始事務、控制事務邊界內的每個連接和資源登記、確定事務結果(提交或中止)以及結束事務。
(2)自動事務
.NET 頁、XML Web services方法或 .NET Framework 類一旦被標記為參與事務,它們將自動在事務范圍內執行。您可以通過在頁、XML Web services 方法或類中設置一個事務屬性值來控制對象的事務行為。
㈩ 在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