sql >> Database >  >> RDS >> Oracle

Problemen met het wijzigen van de datum met een trigger in orakel

Je wilt zoiets als dit:

CREATE OR REPLACE TRIGGER TRIGGER_D
BEFORE
INSERT OR UPDATE ON CONTRACTS
FOR EACH ROW
DECLARE
BEGIN
  UPDATE CONTRACTS
  SET    ENDDATE   = :NEW.STARTDATE - INTERVAL '1' DAY
  WHERE  CLIENTID  = :NEW.CLIENTID
  AND    ENDDATE   > :NEW.STARTDATE
  AND    STARTDATE < :NEW.STARTDATE;
END;

Het werkt echter de tabel bij die de trigger controleert en het lijkt waarschijnlijk dat de trigger updates zal veroorzaken die de trigger opnieuw zullen aanroepen en een muterende tabelfout zullen krijgen.

Het is misschien beter om uw bedrijfslogica in een opgeslagen procedure te plaatsen waar deze de update op de vorige rijen kan uitvoeren en vervolgens de invoeging/update kan uitvoeren. Roep dan, in plaats van DML-instructies direct op de tafel uit te voeren, de opgeslagen procedure aan.




  1. Is de volgorde van tabellen in een join van belang, wanneer LEFT (outer) joins worden gebruikt?

  2. MySQL:kan geen tabel maken (errno:150)

  3. Dubbele telling krijgen bij het uitvoeren van INSERT IGNORE via JDBC

  4. MySQL InnoDB-impasseprobleem met twee dezelfde vragen (verschillende parameters)