Trigger a un champ de type texte

reemosh Messages postés 11 Date d'inscription mercredi 7 octobre 2009 Statut Membre Dernière intervention 3 avril 2014 - 14 janv. 2014 à 18:49
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 19 janv. 2014 à 15:52
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

reemosh Messages postés 11 Date d'inscription mercredi 7 octobre 2009 Statut Membre Dernière intervention 3 avril 2014 1
15 janv. 2014 à 15:02
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;
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
19 janv. 2014 à 15:52
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

Rejoignez-nous