使用者反應請購單拋轉採購單後,請購單的已轉採購數量沒有被回寫。

經查看拋轉程式,裡面有一段程式:

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

arrow
arrow
    創作者介紹
    創作者 米血 的頭像
    米血

    米血的小天地

    米血 發表在 痞客邦 留言(0) 人氣()