lundi 16 août 2010

Sécuriser une table.

Il est possible qu'on crée une procédure ainsi qu'un déclencheur pour pouvoir sécuriser une table (exemple la table employees du schéma SCOTT ou HR).

Voici le code de la procédure:

CREATE OR REPLACE PROCEDURE secure_dml
IS
BEGIN
IF TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '18:00'
OR TO_CHAR (SYSDATE, 'DY') IN ('SAT', 'SUN') THEN
RAISE_APPLICATION_ERROR (-20205,
'Vous avez le droit de manipuler la table EMPLOYE entre les heures du travail ');
END IF;
END secure_dml;
/

Et le déclencheur pour la procédure:

CREATE OR REPLACE TRIGGER secure_employees
BEFORE INSERT OR UPDATE OR DELETE ON employees
BEGIN
-- Appel de la procédure
secure_dml;
END secure_employees;

Exemple: On veut faire la mise à jour du salaire pour un employé numéro 204:

UPDATE EMPLOYEES
SET SALARY = SALARY * 1.2
WHERE EMPLOYEE_ID=204;

Voici le message d'erreur de PL/SQL Developer:



Abed

Aucun commentaire:

Enregistrer un commentaire