2015-06-24 72 views
1

我知道SQLite觸發器的順序是未定義的(你不能確定首先會執行什麼觸發器),但是表約束和觸發器之間的關係又如何?Sqlite:表約束和觸發器

我的意思是,假設我在列中有一個UNIQUE(或CHECK)約束,並且在該表上有一個BEFORE和AFTER UPDATE觸發器。如果UNIQUE列被修改,sqlite什麼時候檢查UNIQUE約束?在調用BEFORE觸發器之後,在調用AFTER觸發器之後,在它們之間還是以未定義的順序?

我在SQLite文檔中找不到任何關於它的信息。

回答

1

當文檔沒有提到任何關於它的內容時,那麼訂單是未定義的。

只要觸發器沒有數據庫外的副作用,這並不重要,因爲如果約束失敗,觸發器所做的任何更改都會回滾。

請注意,SQLite非常重視後向兼容性,所以實際訂單不太可能會改變。