2017-08-11 1 views
-3
CREATE TABLE JOINING_DETAILS(EMPNAME VARCHAR2(20),HIREDATE DATE); 


CREATE OR REPLACE TRIGGER TERW 
BEFORE INSERT ON JOINING_DETAILS 
FOR EACH ROW  
BEGIN 

    IF to_char(:NEW.HIREDATE,'HH24') BETWEEN 18 AND 24 
    AND to_char(:NEW.HIREDATE,'HH24') BETWEEN 00 AND 10 
    THEN 
     RAISE_APPLICATION_ERROR(-20037,'NOT BETWEEN 6 PM TO 10 AM'); 
    END IF; 
END; 

déclencheur exécuté, mais je tente d'insérer la valeur pour le moment 20 il insérer dans la table des joining_details .....écrire un déclencheur pour interdire un employé se joindre à 18 heures-10 heures en semaine

INSERT INTO JOINING_DETAILS VALUES('PANDI',TO_DATE('20','HH24')); 

comment puis-je résoudre ce ....

Répondre

1
IF to_char(:NEW.HIREDATE,'HH24')BETWEEN 18 
AND 24 AND to_char(:NEW.HIREDATE,'HH24') BETWEEN 00 AND 10 THEN 

devrait être

IF to_char(:NEW.HIREDATE,'HH24')BETWEEN 18 AND 24 
OR to_char(:NEW.HIREDATE,'HH24') BETWEEN 00 AND 10 THEN 

(ou non ET)

BTW Je sais que cela est probablement un exercice de classe par écrit déclencheurs, mais si la règle est que la date de location peut ne être entre ces temps alors il serait mieux mis en œuvre comme un chèque contrainte.

+0

MERCI BEAUCOUP SIR –

+0

@Ramapandian - si cette réponse vous a aidé à accepter et/ou à voter avoué. Les réponses acceptées améliorent la valeur de StackOverflow en tant que ressource pour les futurs demandeurs. – APC