使用者反應請購單拋轉採購單後,請購單的已轉採購數量沒有被回寫。
經查看拋轉程式,裡面有一段程式:
TRUNCATE TABLE p490_03_pmdq_t;
這個程式為SQL的指令,用於刪除資料表的內容,與DELETE相似;但不同的是DELETE是DML指令,而TRUNCATE是DDL指令。
又由於拋轉程式通常都會使用transaction的方式確保交易的完整性,好死不死truncate table就寫在transaction當中,因此導致交易運作到一半就被強制commit,也就發生使用者反應的問題。
因此當有應用transaction時,若要刪除資料應使用DELETE FROM p490_03_pmdq_t;的陳述,而不是使用TRUNCATE TABLE p490_03_pmdq_t;
TRUNCATE細節參考:https://docs.oracle.com/cd/E17952_01/mysql-5.6-en/truncate-table.html
會破壞transaction指令參考:https://docs.oracle.com/cd/E17952_01/mysql-5.6-en/implicit-commit.html
文章標籤
全站熱搜