La création de trigger qui déclenche une exception lors de l'insertion

Bonjour amis programmateurs et heureuse nouvelle année à vous tous!

J'ai quelques tâches universitaires pour les vacances d'hiver et un d'entre eux est de créer trigger sur la table:

PERSON(ID, Name, Surname, Age);

Déclencheur est censé informer l'utilisateur quand ils ont inséré ligne avec l'ID non valide. Application des critères est que l'ID est de 11 chiffres.

J'ai essayé d'écrire solution comme ceci:

CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
DECLARE
  idNew VARCHAR(50);
  lengthException EXCEPTION;
BEGIN
  SELECT id INTO idNew FROM INSERTED;
  IF LENGTH(idNew) <> 11 THEN
  RAISE lengthException;
  END IF;
  EXCEPTION
  WHEN lengthException THEN
  dbms_output.put_line('ID for new person is INVALID. It must be 11 digits long!'); 
END;

Puis j'ai réalisé que INSÉRÉE n'existe que dans sqlserver et pas dans oracle.

Que suggéreriez-vous que je puisse faire pour corriger cela?

Merci d'avance!

  • Utilisation BEFORE INSERT, pas AFTER INSERT. Utilisation FOR EACH ROW clause. Ne pas exécuter n'importe quelle requête, il suffit de cocher new.id. Lire ce lien pour plus de détails, il existe de nombreux exemples là: docs.oracle.com/cd/B28359_01/appdev.111/b28370/...
  • Merci pour l'entrée, clairement j'ai besoin de lire cette documentation afin de comprendre les facteurs déclencheurs.
InformationsquelleAutor devBem | 2014-01-02