005 Sql 中需要注意的事務問題.md

005 Sql 中需要注意的事務問題

SqlServer 中開啓與關閉事務

select * from TestTransaction;

-- 開啓事務
Begin Transaction -- isolation read committed 

-- 帶條件的更新
update TestTransaction set name = '李四' where id = 1;

-- 插入數據
INSERT INTO TestTransaction(NAME,age)  VALUES('張三',18); 

-- 提交事務
COMMIT Transaction

-- 回滾事務
ROLLBACK Transaction

MySql中開啓與關閉事務

select * from TestTransaction;

-- 開啓事務
START TRANSACTION;

-- 帶條件的更新

update TestTransaction set name='李四' where id = 1;

-- 插入數據
insert into TestTransaction(name,age)  values('張三',18); 

-- 提交事務
COMMIT 

-- 回滾事務
ROLLBACK

值得注意的是,在數據庫表中,如果我們建立的表沒有建立主鍵將面臨嚴重的問題,當此表在事務中被進行Insert操作,並且在事務進行中,那麼當別的任何數據庫連接對象,來查詢或者操作此表時,整個表都是被鎖定狀態.(即只能等待操作此表的事務提交或者回滾,才能進入到此表中)整個表都被鎖了,這是個很嚴重的問題,所以我們建立數據庫表時,我們一定要爲其指定主鍵,這樣的話,即使有事務在操作此表,那麼事務鎖定的也僅僅是行(被事務操作的行),而不是整個表.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章