oracle 如何用觸發器實現更新剛插入的數據


oracle 如何用觸發器實現更新剛插入的數據
create or replace trigger tr_name
before insert
on 表
for each row
begin
:new.某字段='新值';
end;

修改A表的某條數據的某個字段AA(這個字段是規定好的),在保存后A表的該條數據的另一個字段BB會根據一個函數把AA字段的值處理后更新
create or replace trigger BF_ZJ_UPDATEZJM
  after update of aa on a
for each row
begin
update a set bb=F_PINYIN(:new.aa) where pk_id=:old.pk_id;
end;
---pk_id為你表A的主鍵,---bb=F_PINYIN(:new.aa) 將新的aa值經過函數處理后更新BB字段
你可以測試下,看是否能夠更新並且並發操作是否會出現死鎖 

四樓說的對
---pk_id為你表A的主鍵,---bb=F_PINYIN(:new.aa) 將新的aa值經過函數處理后更新BB字段
你可以測試下,看是否能夠更新並且並發操作是否會出現死鎖
 結果是會出現
謝謝大家的幫忙現在問題已經解決了, 之前的思路想錯了,如果要對同一張表操作的話,不應該用 after update  而應該是before update ,就是應該在update之前進行更改 而且這是update哪條數據 就對那條數據進行修改,所以
if(:old.pk_medinvbasdoc = :new.pk_medinvbasdoc) then
   :new.invmnecode := F_PINYIN(:new.invname) 
就可以了
謝謝大家的幫助了,thank you
http://bbs.csdn.net/topics/380200537



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM