如果在STUD_424中不允许修改XH,触发器将怎样改进?
xh为学号
CREATE OR REPLACE TRIGGER STUD_TRG_424
AFTER
INSERT OR UPDATE OR DELETE
ON STUD_424
FOR EACH ROW WHEN(NEW.XH!=OLD.XH)这样改为什么不行
BEGIN
RAISE_APPLICATION_ERROR(-20003,'不许更改学号');
IF INSERTING THEN
INSERT INTO ST_424
VALUES(:NEW.XH,:NEW.XM,(SYSDATE-:NEW.CSNY)/365);
END IF;
IF UPDATING THEN
DELETE FROM ST_424 WHERE XH=:OLD.XH;
INSERT INTO ST_424
VALUES(:NEW.XH,:NEW.XM,(SYSDATE-:NEW.CSNY)/365);
END IF;
IF DELETING THEN
DELETE FROM ST_424 WHERE XH=:OLD.XH;
END IF;
END STUD_TRG_424;
应该怎么改
问题点数:0、回复次数:2Top
1 楼zakat(听者如歌)回复于 2005-06-02 10:08:22 得分 0
有什么问题?Top
2 楼guangli_zhang(广丽)回复于 2005-06-02 11:44:23 得分 0
CREATE OR REPLACE TRIGGER STUD_TRG_424
AFTER INSERT OR UPDATE OR DELETE ON STUD_424
FOR EACH ROW
BEGIN
RAISE_APPLICATION_ERROR(-20003, '不许更改学号');
IF INSERTING THEN
INSERT INTO ST_424
VALUES
(:NEW.XH, :NEW.XM, (SYSDATE - :NEW.CSNY) / 365);
END IF;
IF UPDATING THEN
if (NEW.XH != OLD.XH) then
DELETE FROM ST_424 WHERE XH = :OLD.XH;
INSERT INTO ST_424
VALUES
(:NEW.XH, :NEW.XM, (SYSDATE - :NEW.CSNY) / 365);
end if;
END IF;
IF DELETING THEN
DELETE FROM ST_424 WHERE XH = :OLD.XH;
END IF;
END STUD_TRG_424;Top




