SQL經典程式設計

2022-03-24 10:03:33 字數 1077 閱讀 3712

use pubs

godeclare @del_error int,@ins_error int

--開始事務

begin tran

--執行刪除命令

delete authors

where au_id ='409-56-1688'

--捕獲執行完刪除操作後的@@error變數的值

select @del_error = @@error

--執行插入操作

insert authors

values ('409-56-1688','bennet','abraham','416 658-9932','6223 bateman st.','berkeley','ca','94160','1')

--捕獲執行完插入操作後的@@error變數的值

select @ins_error=@@error

--測試捕獲到的@@error值

if @del_error = 0 and @ins_error =0

begin

--成功執行確定事務的操作

print 'the author information has been replaced'

commit tran

endelse

begin

--有錯誤發生,檢查究竟是那個語句有問題

--如何回滾整個事務

if @del_error<>0

print 'an error occurred during execution of the delete statement.'

if @ins_error<>0

print 'an error occurred during execution of the insert statement.'

rollback tran

endgo

這個列子的乙個事務中包含了2個操作,程式在每次資料庫操作後都檢查了@@error全域性變數的值。如果2個操作都正常結束,則確定這個事務。但如果有1個操作出現錯誤,則回滾整個事務,使2個操作都不成功。

這個列子具有很強的代表性,因為類似的問題在資料庫程式設計過程中會經常用到

sql經典語句

說明 複製表 只複製結構,源表名 a 新錶名 b access可用 方法一 select into b from a where 1 1 方法二 select top 0 into b from a 注意 複製的新錶中的所有欄位都將沒有預設值,即使源表中有設預設值 說明 一條sql 語句搞定資料庫分...

經典sql語句

經典sql語句大全 update 有關update,急!在oracle資料庫中 表 a id firstname,lastname 表 b id,lastname 表 a 中原來id,firstname兩個欄位的資料是完整的 表 b中原來id,lastname兩個欄位的資料是完整的 現在要把表 b中...

幾個經典sql

幾個經典的sql語句 1.關於group by的sql語句 表結構 year month amount 1991 1 1.1 1991 2 1.2 1991 3 1.3 1992 1 2.1 1992 2 2.2 1992 3 2.3 顯示結果 year m1 m2 m3 1991 1.1 1.2 ...