想做一个触发器:发现表中的一个字段被改了,对应将另一个字段也改过来。如何实现?
sxbug 2005-01-07 09:51:06 这个问题和我前面提的问题是关联的,为了多给热心人分数,就新开了一贴:)
在这个表中,工程的编号是与工程属性有关系的,若用户改变了已输入的工程纪录的工程属性,触发器应将工程编号对应修改。修改的原则比较麻烦,假设有表:
工程编号 工程名称 工程属性
2005qx0001 123 1
2005qx0002 213 1
2005lx0001 312 2
2005lx0002 121 2
2005lx0003 212 2
若将倒数第二行的工程属性(2)改成(1),则表中的数据自动变成:
工程编号 工程名称 工程属性
2005qx0001 123 1
2005qx0002 213 1
2005lx0001 312 2
2005qx0003 121 1
2005lx0002 212 2
就是工程属性(2)的数据应该自动重新排序,被改动的纪录在工程属性(1)的序列中自动变成最后一条记录。
我写了一点,有问题。
CREATE OR REPLACE TRIGGER "JAMIS"."T_UPDATE_TASK_ATTR" AFTER
UPDATE OF "TASKATTRIBUTE"
ON "JAMIS"."TASK"
FOR EACH ROW
declare
myYear Varchar(10);
myTAALIAS Varchar(2);
newTaskID Varchar(10);
myYearCount NUMBER(10);
BEGIN
select (to_char(sysdate,'yyyy')||'%') into myYear from dual;
select TAALIAS into myTAALIAS from TASKATTRIB where TASKATTRIBUTEID=:new.TASKATTRIBUTE;
select to_char(sysdate,'yyyy')||myTAALIAS||lpad(to_char(myYearCount+1),4,'0') into newTaskID from dual;
:old.TASKID=newTaskID;
End;
望高人指点,谢谢