我有一個現有的TABLE postn_matrix
其中包含員工列表和他們的責任計數。在組織中的職位。光標在觸發器
每當用戶的位置添加或刪除,相應的計數體現在表救援人員到場該觸發器(VIA UPDATE)現在
,如果有新的用戶,他不會有一個入口在postn_matrix
中,所以我必須爲他/她插入新的記錄(VIA INSERT)。這需要從BASE TABLE中引入。
該更新似乎工作正常,但我無法引入一個新的用戶到表中。
我一直在試圖用遊標來處理這種情況。但它還沒有任何幫助。 我希望有些專家可以告訴我光.. :)。除了使用光標任何其他建議將非常感激
CREATE OR REPLACE TRIGGER TRIG1
BEFORE INSERT OR DELETE ON (BASETABLE)
FOR EACH ROW
DECLARE
cursor c1 is
select person_id
from postn_matrix;
v_temp varchar2(15);
BEGIN
IF INSERTING THEN
open c1;
LOOP
fetch c1 into v_temp;
if v_temp!=:new.person_id THEN
insert into POSTN_MATRIX (PERSON_ID)
VALUES (:new.PERSON_ID);
else
UPDATE POSTN_MATRIX
//this is working fine ;
END IF;
end loop;
close c1;
END
/
我不明白。如果在BASETABLE中有新記錄,並且您已經知道POSTN_MATRIX中沒有記錄,那麼爲什麼要在POSTN_MATRIX上循環遊標?只需插入一條新記錄。 – Rene 2012-07-20 13:41:20
請閱讀SQL基礎知識並閱讀它。你確實需要一個遊標來做到這一點,而且你的SQL通常不應該有'if then'語句。 SQL是一種定位語言。請參閱http://www.codeproject.com/Articles/10144/SQL-as-a-set-oriented-language – ThomasMcLeod 2012-07-20 13:42:51