我想创建一个触发器,可以修改或插入我的表“合同”中的日期:
“如果拥有当前合同的客户签署新合同,结束日期
前一个活动将是新活动开始日期的前一天”
So, my trigger is:
CREATE OR REPLACE TRIGGER TRIGGER_D
BEFORE
INSERT OR UPDATE ON CONTRACTS
FOR EACH ROW
DECLARE
idcliente CONTRACTS.CLIENTID%TYPE;
fecha_fin CONTRACTS.ENDDATE%TYPE;
BEGIN
if :NEW.CLIENTID = idcliente
then
if TO_CHAR(fecha_fin) IS NULL OR TO_CHAR(fecha_fin) > TO_CHAR(:NEW.STARTDATE)
then
INSERT INTO CONTRACTS (ENDDATE) VALUES
(:NEW.STARTDATE);
update CONTRACTS
set
ENDDATE = :NEW.STARTDATE;
end if;
end if;
END;
我尝试插入这样的行:
INSERT INTO CONTRACTS (CONTRACTID, CLIENTID, STARTDATE, ENDDATE, CONTRACT_TYPE ,ADDRESS ,TOWN, ZIPCODE, COUNTRY)
VALUES ('TW42260/09','99/98480296/22T',TO_DATE('18/04/17','DD/MM/YY'), NULL ,'Flat Rate Lover','69 Citadel Street, Ground floor, door 1','Summer forest', '11164' ,'Taiwan, Province of China');
这个触发器编译得很好,但他们没有做任何事情。