導航:首頁 > 廢水知識 > sql事務回滾怎麼用

sql事務回滾怎麼用

發布時間:2021-11-22 04:17:14

Ⅰ SQL回滾的作用什麼

回滾的作用就是,當有一個SQL語句執行時,條件不符合要求,比如你要插入一個數據,但是插入的數據要有條件的,這時候你就可以用回滾,如果條件成功就COMMIT提交的意思,不然就ROLLBACK回滾,也就是說插入不成功

Ⅱ 在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 Server中事務處理怎麼用

BeginTrans:開始事務
CommitTrans:提交事務
RollBackTrans:回滾事務
事務具有原子性,要麼不執行,要麼全執行,一旦成功執行永久保存。下面是個轉賬的事務應用的例子。
If Not Exists (Select * From sysobjects Where name='bank')
Begin
Create Table bank
(
bankid int identity(1,1) Primary Key ,
username varchar(50) not null,
rmbnum float not null
)
End

-- add constraint 限制帳戶存額不小於0
Alter Table bank add constraint CK_bank_rmbnum check(rmbnum>0)

-- init table bank
Insert Into Bank (username,rmbnum) Values ('張三',10000)
Insert Into Bank (username,rmbnum) Values ('李四',10000)
Insert Into Bank (username,rmbnum) Values ('王五',10000)
Insert Into Bank (username,rmbnum) Values ('小兒',10000)

-- 執行轉賬 將張三的帳戶上劃20000萬到李四的賬戶上
declare @howmuch float
set @howmuch=20000
update bank set rmbnum=rmbnum-@howmuch where username='張三'
update bank set rmbnum=rmbnum+@howmuch where username='李四'
-- 以上過程前者失敗後者成功。因為張三賬戶余額不足。
/*
事務的格式:
Begin TransAction --開始事務傳輸
Commit TransAction --提交事務
RollBack TransAction --回滾事務
*/

update bank set rmbnum=10000

set nocount on -- 設置不顯示影響的行數
print('查看轉賬前帳戶余額:')
Select * From bank
Begin TransAction
declare @errno int
declare @num int
set @errno=0
set @num=100000
--將王五的帳戶減少@num
Update Bank set rmbnum=rmbnum-@num where username='王五'
set @errno=@errno+@@error --加上執行過程中產生的錯誤編號
-- 將小兒的帳戶增加@num
update bank set rmbnum=rmbnum+@num where username='小兒'
set @errno=@errno+@@error

-- 根據是否產生錯誤決定事務是提交還是撤銷
If @errno>0
begin
print('事務處理失敗,回滾事務!')
rollback TransAction
end
Else
Begin
print('事務處理成功,提交事務!')
Commit TransAction
End

print('查看轉賬後庄戶余額:')
Select * From Bank

Ⅳ 對於已經執行成功的sql命令,如何回滾

mysql命令行下怎樣實現數據的回滾操作
在MySQL有時執行了錯誤的update或者delete時導致大量數據錯誤恢復的辦法。執行時沒有開啟事務,也沒有對數據進行。這時就需要使用到sqlbinlog工具。
sqlbinlog需要開啟,具體的打開方法就不說了。

使用sqlbinlog會產生bin文件,恢復就需要用到這些文件。文件中記錄著資料庫的所有操作。(此方法的操作是將資料庫之前所執行的語句重新執行一次,以達到恢復效果)
具體步驟:1,先找到bin文件,一般都是在mysql的data文件夾中,結尾以.00000X等形式結束。
2,尋找需要還原的時間點 使用語句 mysqlbinlog 文件名 例(MySQLbinlog xxbin.000001)來查看內容,然後找到對應的具體時間
3,導出sql語句,使用語句 mysqlbinlog 文件名>sql文件路徑 例(mysqlbinlog xxxbin,00001>>a.sql | mysql -u root -p )
如果需要指定時間導出--start--date -stop='' --date='' 來導出指定時間執行的語句例(sqlbinlog --start-stop='2015-11-22 10:00:00' xxbin.000001>a.sql | mysql -u root -p )這句意思是導出在2015-11-22 10點之前的語句,反之start是導出時間之後的。 start和stop可以同時使用。
如果存在多個bin文件,則按照需要導出。
4,使用mysql將導出的語句執行一次。

Ⅳ SQL語言中,用於事務回滾的語句是什麼

回滾要放抄在事務裡面進行,才能進行回滾;sql裡面的事務使用關鍵字TransAction
1:可以用try catch捕獲
begin try
begin tran
update table set a=1;
commit tran
end Try
begin catch
rollback tran
end catch

2:可以使用error 全局變數
begin tran
update tablename set ad=1111
if @@error<>0 begin rollback end
commit tran

注意:如果一個事務寫了 begin trans ,後面一定要跟上 commit tran或 rollback transaction ,否則可能導致被鎖

Ⅵ sql server事務回滾代碼怎麼寫

事務回滾有幾種,下面只是常見的一種

declare@iErrorCountint
set@iErrorCount=0
begintranTran1
insertintot1(Id,c1)values(1,'1')
set@iErrorCount=@iErrorCount+@@error

insertintot1(Id,c1)values('XX2','2')
set@iErrorCount=@iErrorCount+@@error

if@iErrorCount=0
begin
COMMITTRANTran1--執行事務
end
else
begin
ROLLBACKTRANTran1--回滾事務
end

Ⅶ sql 回滾語句

這種情況的數據恢復只能利用事務日誌的備份來進行,所以如果你的SQL沒有進行相應的全庫備份

或不能備份日誌(truncate log on checkpoint選項為1),那麼就無法進行數據的恢復了,或者
只能恢復到最近一次的備份的數據了。

以下簡單說明恢復數據方法:
1,如果誤操作之前存在一個全庫備份(或已有多個差異備份或增量備份),首先要做的事就是進
進行一次日誌備份(如果為了不讓日誌文件變大而置trunc. log on chkpt.選項為1那你就死翹了)
backup log dbName to disk='fileName'
2,恢復一個全庫備份,注意需要使用with norecovery,如果還有其他差異或增量備份,則逐個恢

restore database dbName from disk='fileName' with norecovery
3,恢復最後一個日誌備份即剛做的日誌備份,指定恢復時間點到誤操作之前的時刻
restore log dbName from disk='fileName'
with stopat='date_time'

以上這些操作都可以在SQL SERVER企業管理器里完成,難度不大。。。

當然,如果誤操作是一些不記日誌的操作比如truncate table,select into等操作,那麼是無法利
用上述方法來恢復數據的...

Ⅷ sql中的存儲過程里怎麼寫事務回滾啊

CREATE PROC [dbo].[notice_Delete] --- 同時刪除該通知書和對應的節點
@tbl VARCHAR(30),
@pid INT
AS
BEGIN
DECLARE @tblname VARCHAR(30) ;
DECLARE @sql VARCHAR(1000) ;
SET @tblname = @tbl
SET @sql = 'delete ' + @tblname + ' where id ='
+ CONVERT(VARCHAR(10), @pid)

BEGIN TRAN --開始事務

EXEC ( @sql
)
IF ( @@rowcount = 0 ) --執行結果影響行數為0
BEGIN
ROLLBACK TRAN --回滾
END
ELSE
BEGIN
DELETE FROM tbl_treenotice
WHERE purposeid = @pid
IF ( @@rowcount = 0 ) --執行結果影響行數為0
BEGIN
ROLLBACK TRAN --回滾
END
ELSE
BEGIN
COMMIT TRAN --提交事務
END
END
END

Ⅸ sql語句中用什麼語句實現事務的回滾

-開啟事務 begin tran --執行操作 update Accounts_UsersExp set TelPhone=123456 where userid=14 --執行錯誤事務回滾 rollback --如果正內確進行事容務提交 commit

Ⅹ 資料庫(sql server )回滾事務

這個要求不需要用事務回滾的吧。
insert
中加上判斷該工號記錄數的條件即可,保證當記錄數少於4時執行插入語句。
insert
()
values()
where(select
count(*)
from
table
where
emp_id=『20100021』)<4

閱讀全文

與sql事務回滾怎麼用相關的資料

熱點內容
南匯污水處理廠在哪裡 瀏覽:808
知識蒸餾英文 瀏覽:55
辛集皮革污水招工網 瀏覽:9
醫學陽離子交換劑 瀏覽:736
新車內空氣凈化器怎麼選擇 瀏覽:750
家禽廢水 瀏覽:567
供排水管道除垢 瀏覽:532
凈水出口和純水出口怎麼區分 瀏覽:541
洛陽地埋式污水處理設備價格 瀏覽:503
回用景觀水 瀏覽:447
粉劑除垢劑 瀏覽:296
樹脂瓦機械多少錢 瀏覽:381
環氧樹脂地坪的防火等級要求 瀏覽:218
岳陽污水處理廠有哪些 瀏覽:34
什麼飲水機安全 瀏覽:356
超濾凈的水含有礦物質嗎 瀏覽:594
拾回雕文怎麼用 瀏覽:889
污水處理池施工碰到的問題 瀏覽:129
宋dm空氣凈化器怎麼樣 瀏覽:605
靜放水除水垢 瀏覽:359