極度詭異的oracle同一張表操作兩次的問題

2021-05-28 15:40:20 字數 878 閱讀 2354

因為有一張表中,某幾個欄位是根據同一張表的另幾個字段計算得來的,當時的思路是,先insert,再update這條記錄

sql_insert=insert into t_cp_tv_value (tv_prot_id,cp_id,uv,unicast_value,mon_value,mon_fee,is_del,date_time ) values (1,1,54,24,2,4,1,to_date ( '2011-10-06 12:46:00' , 'yyyy-mm-dd hh24:mi:ss'))

sql_update=update t_cp_tv_value set unicast_fee = unicast_value * (select traffic from t_sp_tv_port where tv_prot_id =1),conversion=(unicast_value+mon_value)/uv,arpu = (unicast_fee + mon_fee)/uv,all_fee = unicast_fee + mon_fee where tv_prot_id = 1 and cp_id =1 and date_time = to_date('2011-10-06 12:46:00','yyyy-mm-dd hh24:mi:ss')

首先可以肯定的是句語沒有問題

然後想到是不是時間太短,所以sleep一下程式,發現還是不行,再想是不是程式第一次沒有commit,所以update不到結果,所以加了cimmit,還是不行

只能拿到pl/sql來試了,先執行insert,再執行update,不行,為啥呢,難道偶手太快,偶再次放慢了速度,結果還是不成。這時,偶無意中發現了,如果偶insert,update第一次不行,但第二次再update這條資料就ok了,神馬情況,偶放到程式裡update兩次,成了。哪位大俠要是能看出門道,給偶留個言吧

Oracle用rowid刪除同一張表的重覆記錄

經常有這樣乙個業務場景,我們在同一張表中有重複的記錄,我們要刪除重複的記錄,這篇文章就是用來解決這個問題的,用的方法是我目前遇到的效率最高的方法 如果有更好的方法歡迎提供 這個方法會用到了rowid,下面簡單介紹一下rowid的定義通常來說,乙個rowid值唯一標識資料中的一行。然而,儲存在同一聚簇...

Oracle用rowid刪除同一張表的重覆記錄

經常有這樣乙個業務場景,我們在同一張表中有重複的記錄,我們要刪除重複的記錄,這篇文章就是用來解決這個問題的,用的方法是我目前遇到的效率最高的方法 如果有更好的方法歡迎提供 這個方法會用到了rowid,下面簡單介紹一下rowid的定義 通常來說,乙個rowid值唯一標識資料中的一行。然而,儲存在同一聚...

更新同一張表的整列字段

先需要先把需要更新的整列結果查詢出來。這裡記錄下mysql時間的函式 date format 欄位名,y m d h i s 第二個引數是要轉換的格式,因為我本來的格式中有毫秒。以下是舉例 轉換的sql select id as dd,date format created,y m d h i s ...