我有一个现有的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