Trigger a un champ de type texte

Signaler
Messages postés
11
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
3 avril 2014
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
Bonjour a tous ,
je suis débutante avec les triggers et je cherche a créer un trigger qui limite un champ texte a sa langeur maximal d'aprés mes recherches j'ai vu que je peut faire ça a l'aide de substring mais j'ai pas trouvé un exemple complet d'un trigger qui traite un cas pareil .y'a t'il quelqu'un qui peut m'aider merci d'avance

2 réponses

Messages postés
11
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
3 avril 2014
1
j'ai essayer de faire une fonction qui me permet de faire ça pour 2 champs texte de la table personne qui sont nom et prenom mais lors de l'insertion j'ai pas pu tester mon trigger

CREATE OR REPLACE FUNCTION mafonction()
RETURNS trigger AS
$BODY$

begin
RAISE EXCEPTION '% le champ est vide', NEW.nom;
NEW.nom = substring(NEW.nom from 1 for CHAR_LENGTH(nom));
RAISE EXCEPTION '% le champ est vide', NEW.prenom;
NEW.dipl_type=substring(NEW.prenom from 1 for CHAR_LENGTH(prenom));
return NEW;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION mafonction()
OWNER TO postgres;
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
Bonjour

je ne sais pas quelle est ta base de données, mais en SQL Server voila comment j'écrirais mon trigger:
(quoique le plus simple étant de limiter la taille du type)
ALTER TRIGGER [dbo].[TRG_TEST_CheckName]
   ON  [dbo].[TEST]
   AFTER INSERT,UPDATE
AS 
BEGIN
	
  SET NOCOUNT ON;
  IF EXISTS (SELECT NOM from inserted where (LEN(NOM) > 5))
  BEGIN
    RAISERROR ('Le champ NOM ne peut excéder 5 caractères', 16, 1);
    ROLLBACK TRANSACTION;
  END
END