比如有兩個表:賬號表和資訊表,而這兩個表之間有關聯。因此呢,我們在新增乙個表的資料的時候就得給另外乙個表也同時新增資料。然而這是兩步操作(即第一步我要新增賬號表資料,第一步在新增資訊表資料)。假若其中有乙個操作失敗了呢?如賬號新增成功,而資訊失敗了。如果不處理就會導致,這個賬號沒有資訊的。因此事務就發生作用了。在乙個事務中,必須要都成功才算是新增成功。否則都算失敗。
第一種:
在conroller層中引入事務裝飾器,並且當個引數傳遞到服務層。
如:user.controller.ts內容如下:
import
from
'@nestjs/common'
;import
from
'typeorm'
;import
from
'./user.service'
;@controller
('user'
)export
class
usercontroller
/* 刪除資料
由於有可能出現兩張表同時進行操作的情況
因此開啟事務事件:為了讓同時進行的表操作要麼一起完成,要麼失敗
@transaction()和 @transactionmanager() manager: entitymanager 是事務的裝飾器和物件
@query ?id=***
*/@delete
('del'
) @transaction()
delone
( @query
() query,
@transactionmanager
() manager: entitymanager,
): promise
}
解讀:在controller層的方法中新增乙個引數@transactionmanager() manager: entitymanager並在將該方法使用@transaction()進行裝飾,此時就能拿到事務裝飾器manager,將其傳遞給服務層就好了。
然後在服務層當作實體管理器使用即可
服務層user.service.ts 內容如下:
import
from
'@nestjs/common'
;import
from
'@nestjs/typeorm'
;import
from
'typeorm'
;import
from
'src/entities/user.info.entity'
;import
from
'../entities/user.account.entity'
;@injectable()
export
class
userservice);
manager.
delete
(useraccount, query.id)
;// 這裡的第二個引數等同於
return
'刪除成功!';}
}
解讀:delone中的manager即從controller層中傳遞過來的。manager是乙個事務實體管理器,可以直接操作相關方法或者構建query builder查詢。api參照:實體管理器api
這樣就形成事務了。
第二種:
直接在服務層使用實體管理其的transaction()方法即可
服務層user.service.ts 內容如下:
import
from
'@nestjs/common'
;import
from
'typeorm'
;import
from
'src/entities/user.info.entity'
;import
from
'../entities/user.account.entity'
;@injectable()
export
class
userservice);
transactionalentitymanager.
delete
(useraccount, query.id);}
);return
'刪除成功!';}
}
注意:以上兩種僅僅只是常規方式,還有其他的事務使用方式,有需要可以去官網了解。 資料庫事務的作用及事務隔離級別分析
什麼是事務 事務是訪問資料庫的乙個操作序列,資料庫應用系統通過事務集來完成對資料庫的訪問。事務必須服從iso iec所制定的acid原則。acid是原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 的縮寫,這四種狀態的意思是 1 原...
Transaction ACID 事務及事務特性
事務一般是針對db來討論 而且基本是討論4方面,目前的解釋都是在db上討論的 acid a花費100 購買b的商品,整個操作整體被當成事務處理 before a賬戶1000 b賬戶1000 after a賬戶900 b賬戶1100 原子性 整個操作包含2個部分 1 a賬戶 1000 100 900 ...
事務及事務隔離級別
什麼是事務 事務是訪問資料庫的乙個操作序列,資料庫應用系統通過事務集來完成對資料庫的訪問。事務的正確執行使得資料庫從一種狀態轉換為另一種狀態。事務必須服從iso iec所制定的acid原則。acid是原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 du...