Rechercher : dans
Par :

SQL contrainte check évalué avant un trigger

Dernière réponse le 5 sep 2008 à 00:57:33 paki131, le 5 sep 2008 à 00:32:28 
 Signaler ce message aux modérateurs

Bonjour,

Je construit un base de donnée en SQL sur PostgreSQL

Mon problème: j'ai une contrainte primary key sur une table et un trigger sur la meme table qui s'occupe que modifié les valeurs pour que tout fonctionne bien

ma_table:
-reference1 REFERENCES table1(id),
-reference2 REFERENCES table2(id),
-quantite int,
-primary key(reference1, reference2)


create or replace function trigger_ma_table() RETURNS TRIGGER as
$$
begin
if tg_op='INSERT' and exists (select reference1 from ma_table
where reference1 = new.reference1 and reference2 = new.reference2)
then
update ma_table set quantite=quantite+new.quantite
where reference1 = new.reference1 and reference2 = new.reference2;
return null;
end if;
return new;

end
$$
language plpgsql;


donc si je fais un insert d'une ligne qui ce trouve déja dans la BD ca ne fonctionnera pas a cause de la pk qui se fait avant, ce que je voudrais c'est que les quantite s'aditionne.

merci pour vos réponse.

Configuration: Linux Fedora
Firefox 3.0.1
postgreSQL

Meilleures réponses pour « SQL contrainte check évalué avant un trigger » dans :
SQL - Contraintes d'intégrité Voir Expression de contraintes d'intégrité Une contrainte d'intégrité est une clause permettant de contraindre la modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base soient...
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Oracle - Optimiser les performances de l'Import/Export VoirOptimiser les performances de l’Import/Export Utiliser « commit=y » Adapter la taille du buffer au besoin « BUFFER=…. » Il est préférable de désactiver les triggers, les contraintes et supprimer les index avant l’import et les recréer après...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...

1

 paki131, le 5 sep 2008 à 00:57:33

Ok erreur de ma part désolé pour l'éventuel dérangement

Répondre à paki131