Accueil > Forum > > > > recuperer 1 variable dans un trigger (C#)
recuperer 1 variable dans un trigger (C#)
vendredi 9 juin 2006 à 10:07:32 |
recuperer 1 variable dans un trigger (C#)

bootchoz
|
bonjour, je debute en c# et je n'arrive pas a recuperer la valeur d'une variable @id_pers pour l'inserer dans une table via un trigger. voici le code de ma page .aspx < asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:projetConnectionString1 %>" InsertCommand="INSERT INTO [personne] ([wwid_pers], [nom_pers], [id_resp]) VALUES (@wwid_pers, @nom_pers, @id_resp)" ProviderName="<%$ ConnectionStrings:projetConnectionString1.ProviderName %>" SelectCommand="SELECT personne.id_pers, [wwid_pers], [nom_pers], [id_resp] FROM [personne], [fonction], [a_com_fonc] WHERE fonction.id_fonc=a_com_fonc.id_fonc AND a_com_fonc.id_pers=personne.id_pers AND [nom_fonc]='signataire'">
voici le code généré par le trigger : SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO CREATE TRIGGER [insert_sign] ON [dbo].[personne] FOR INSERT AS DECLARE @id_pers bigint INSERT INTO a_com_fonc (id_pers, id_fonc) VALUES (@id_pers, 3) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
le message d'erreur qu'il me met : Cannot insert the value NULL into column 'id_pers',...
merci de votre aide !
|
|
vendredi 9 juin 2006 à 12:48:36 |
Re : recuperer 1 variable dans un trigger (C#)

crilun
|
crilun
pourquoi tu declares @id_pers comme un bigint???
si c'est une nouvelle variable alors il est vrai que tu ne la remplie pas donc normal qu'elle soit à NULL
par contre si ce champ appartient à ta table de depart t'as pas besoin de redeclarrer.
en regardant plus haut je vois wwid_pers comme champ, je pense que c'est donc plutot ca que tu veux :
SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ALTER TRIGGER [insert_sign] ON [dbo].[personne] FOR INSERT AS --DECLARE @id_pers bigint INSERT INTO a_com_fonc (id_pers, id_fonc) VALUES (wwid_pers, 3) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
|
|
vendredi 9 juin 2006 à 15:37:17 |
Re : recuperer 1 variable dans un trigger (C#)

bootchoz
|
 en fait, 'id_pers' est la clé primaire de ma table, elle s'incremente donc automatiquement. 'wwid_pers' est un de ses attributs. j'ai 3 tables : personne, fonction, a_com_fonc. je voudrais recupérer l'identifiant, généré par l'insertion du nouvel enregistrement dans la table personne, pour le mettre dans la table a_com_fonc avec l'id_fonc correspondant (ici 3)
|
|
vendredi 9 juin 2006 à 17:18:40 |
Re : recuperer 1 variable dans un trigger (C#)

crilun
|
crilun
essaye ca :
en fait tu recuperes l'id qui vient d'etre inseré avec FROM INSERTED
par contre pour ta fonction si c'est toujours 3 c'est bon,
en revanche tu ne peut pas passer de parametres a un trigger,
par consequent si tu veut le passer en parametre, plutot que de passer
par une requete+trigger pour faire ton insertion passe par une
procedure stockée qui te fera tout ca,
mais ca ne sera pas generé automatiquement dans tes autres applis du
coup mais tu pourras toujours reutiliser ta procdure stockée
SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ALTER TRIGGER [insert_sign] ON [dbo].[personne] FOR INSERT AS
DECLARE @id_pers bigint
SET @id_pers=(SELECT id_pers FROM INSERTED)
INSERT INTO a_com_fonc (id_pers, id_fonc) VALUES (@id_pers, 3) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
|
|
dimanche 11 juin 2006 à 13:44:35 |
Re : recuperer 1 variable dans un trigger (C#)
|
lundi 12 juin 2006 à 14:18:44 |
Re : recuperer 1 variable dans un trigger (C#)

bootchoz
|
c'est encore moi !!! j'ai modifié ma procedure : CREATE PROCEDURE InsertSign
AS DECLARE @id_resp bigint DECLARE @id_pers bigint DECLARE @id_fonc bigint DECLARE @nom_pers varchar(50) DECLARE @wwid_pers varchar(10)
INSERT INTO [personne] ([wwid_pers], [nom_pers], [id_resp]) VALUES (@wwid_pers, @nom_pers, @id_resp)
SET @id_pers=(SELECT id_pers FROM INSERTED) SET @id_fonc=(SELECT id_fonc FROM fonction WHERE nom_fonc='signataire')
INSERT INTO a_com_fonc (id_pers, id_fonc) VALUES (@id_pers, @id_fonc) GO et je l'appelle via ce code :
using (SqlConnection con = newSqlConnection(connectionString))
{
SqlCommand
com =
new
SqlCommand
(
"insertSign"
, con);
com.CommandType = CommandType.StoredProcedure;
con.Open();
com.ExecuteNonQuery();
con.Close();
}
 j'ai toujour l'erreur Cannot insert the value NULL into column 'id_resp' et en plus Invalid object name 'INSERTED' je ne sais plus quoi faire !!! est-ce kil existe une methode pour le faire de facon atomique ?
|
|
lundi 12 juin 2006 à 15:42:49 |
Re : recuperer 1 variable dans un trigger (C#)

crilun
|
crilun
normal INSERTED ne sert que pour les triggers, la requete que je t'ai
filé avant es un trigger pour le mettre en procedure stockée :
INSERT INTO [personne] ([wwid_pers], [nom_pers], [id_resp]) VALUES
(@wwid_pers, @nom_pers, @id_resp)
SET @id_pers=(SELECT MAX(id_pers) FROM PERSONNE)
SET @id_fonc=(SELECT id_fonc FROM fonction WHERE nom_fonc='signataire')
INSERT INTO a_com_fonc
(id_pers, id_fonc) VALUES (@id_pers, @id_fonc)
dans ta procédure stockée je te conseil de rajouter une transaction
(c'est bien documenté et i y a des exemples dans la doc sql server, ca
te permet d'effectuer plusieurs requete et de faire les mises ajour
uniquement si tuoutes tes requetes ce sont bien passées sinon aucune
modificatio n'es apporté)
|
|
jeudi 15 juin 2006 à 10:35:07 |
Re : recuperer 1 variable dans un trigger (C#)

bootchoz
|
me revoilà avec mon soucis un peu different cette fois car j'ai essayé avec une procédure :
CREATE PROCEDURE InsertAdmin
AS
BEGIN TRANSACTION
DECLARE @id_fonc bigint DECLARE @id_pers bigint DECLARE @wwid_pers bigint DECLARE @nom_pers varchar(50) DECLARE @id_chef_pers bigint
INSERT INTO [personne] ([id_pers], [wwid_pers], [nom_pers], [id_chef_pers]) VALUES ('', @wwid_pers, @nom_pers, @id_chef_pers)
SET @id_fonc=(SELECT id_fonc FROM fonction WHERE nom_fonc='administrateur') SET @id_pers=(SELECT MAX(id_pers) FROM [personne])
INSERT INTO a_com_fonc (id_pers, id_fonc) VALUES (@id_pers, @id_fonc)
COMMIT TRANSACTION GO
je l'insere dans ma page.aspx comme ceci : <asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:ConnectionString %>" InsertCommand="InsertAdmin"InsertCommandType="StoredProcedure" />
<asp:LinkButtonID="InsertButton" runat="server"CausesValidation="True"CommandName="Insert" Text="Insert">
le message d'erreur est le suivant :Procedure InsertAdmin has no parameters and arguments were supplied
j'ai essayé en les ecrivant : CREATE PROCEDURE InsertAdmin @id_pers bigint, @wwid_pers bigint, @nom_pers varchar(50), @id_chef_pers bigint le nouveau message d'erreur est :Cannot insert explicit value for identity column in table 'personne' when IDENTITY_INSERT is set to OFF. Violation of PRIMARY KEY constraint 'PK_a_com_fonc'. Cannot insert duplicate key in object 'a_com_fonc'.
I'm stuck, help me please...
|
|
jeudi 15 juin 2006 à 12:29:39 |
Re : recuperer 1 variable dans un trigger (C#)

crilun
|
Réponse acceptée !
crilun
salut,
il y a un truc qui me chagrine dans ta requete :
INSERT INTO [personne] ([id_pers], [wwid_pers], [nom_pers], [id_chef_pers]) VALUES ('', @wwid_pers, @nom_pers, @id_chef_pers)
id_pers n'est pas une clef primaire autoincrementable?
si ou dans ce cas tu ne peut pas choisir toi meme la valeur à inserer d'ou le IDENTITY_INSERT is set to OFF. ta requete devient donc :
INSERT INTO [personne] ([wwid_pers], [nom_pers], [id_chef_pers]) VALUES (@wwid_pers, @nom_pers, @id_chef_pers)
ensuite : Violation of PRIMARY KEY constraint 'PK_a_com_fonc'. Cannot insert duplicate key in object 'a_com_fonc'. veut juste dire que tu as un probleme de clef
primaire dans la table a_com_fonc c'est a dire que par exemple si tes
clefs primaires sont id_pers et id_fonc,dans ton code tu as essayé
d'inserer le meme id_pers pour la meme fonction donc il te jete
puisqu'il ne peut ajouter 2 enregistrements ayant le meme doublé de
clefs puisque c'est leur identifiant.
précise moi si id_pers est un autoincrementable et la relation entre
personne et fonction,en gros est ce que tu geres les fonctions dans le
temps c'est a dire est ce que si une personne change de fonction est ce
que tu concerve son ancienne fonction avec un champ date et tu l'insere
ensuite avec une nouvelle fonction ou bien est ce que tu fais
simplement une mise à jour de sa fonction.
et je te dirais ou mettre les clefs sur tes tables.
|
|
vendredi 16 juin 2006 à 09:18:52 |
Re : recuperer 1 variable dans un trigger (C#)

bootchoz
|
merci, merci, merci...  enfin ca fonctionne ! j'ai juste supprimer IDENTITY_INSERT is set to OFF et modifier la requete comme tu l'as ecrite. id_pers est bien auto incrementable et une personne peut avoir 1 ou plusieurs fonction associée et pour une fonction il existe une ou plusieurs personnes. d'ou la table qui contient les cles primaires id_fonc et id_pers. encore merci
|
|
Cette discussion est classée dans : insert, id, trigger, pers, fonc
Répondre à ce message
Sujets en rapport avec ce message
retour id-auto lors d' INSERT INTO [ par bnedust ]
bonjour,j'effectue un ordre INSERT INTO dans une page web.la clé primaire de la table concernée est du type numéro-auto (Acces2000).j'aurai voulu récu
trigger en SQL server [ par Kurul1 ]
Bonjour à tous J'ai un petit souci avec les triggers. J'ai une table zone avec un identifiant id_zone et un libelle libelle_zone. Jusque là, pas de pb
Problème de trigger en SQL server [ par diabolooo ]
Salut à tous,j'ai une table dans une base SQL server qui comporte 4 champs (id, date, heure, mesure)la clé primaire est composée des champs id, date,
insert dans 2 tables [ par babibel122 ]
je ne sais pas comment faire en asp pour lier deux tables ensemble.j'ai créer un formulaire avec 3 champs qui vont dans la table 1 et 3 champs qui von
Asp.net - Sql Server : Cannot insert the value NULL into column 'id' [ par Nexto ]
Bonjour,J'ai essayé de faire une page asp.net avec une simple page pour faire un ajout dans une base de donné mysql server. Pour cela j'ai utilisé une
Comment faire des transaction imbriquées en ASP [ par shaft107 ]
Bonjour à tous Je souhaite faire 5 insertions dans ma base de données mais vu qu'il s'agit de tables différentes comment faire des transactions en eff
Récupérer l'ID après un INSERT INTO [ par audile ]
Bonjour,Est-ce qu'une fonction en ASP.NET permet de récupérer l'identifiant de l'enregistrement qu'on vient d'insérer avec un INSERT INTO ?Merci d'ava
set d'une var qui retourne null [ par bootchoz ]
salut a vous les developpeurs !voila, j'ai un souci lors de l'appel a une procedure stockée que voici : elle retourne la valeur null pour @id_pers!
Detailsview, Guid, Insert [ par dji200 ]
Bonjour à tous,J'aimerais que vous m'aidiez à faire un truc simple mais visiblement non prévu par .net 2.0J'ai un detailsview, j'aimerais que l'on ins
Formulaire Comment Faire pour passer en mode INSERT ? [ par ranouf ]
DataSourceID="ObjectDataSource1"> Id_Utilisateu
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
STABILITé DU DéBIT 3GSTABILITé DU DéBIT 3G par benzekrighizlane
Cliquez pour lire la suite par benzekrighizlane
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|