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