Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1680 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  HELP!!!!!!!!Problème Sql Server sous vb.net!!!!!!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

HELP!!!!!!!!Problème Sql Server sous vb.net!!!!!!!!

n°816108
Jeuneloup
Posté le 05-08-2004 à 16:17:56  profilanswer
 

Bonjour,
 
Je me trouve face à un problème que je n'arrive absolument pas à résoudre et qui commence à me rendre hystérique.
J'ai une base de donnée sql server avec une trois tables.
La premiere table est la table "personne" et les deux autres sont respectivement "client" et "fournisseur".
L'identifiant de la table personne est un numéro automatique.
Etant donné que les entités client et fournisseur sont des héritages de la table personne, leur identifiant est celui qui se trouve dans la table personne.
 
Le problème c'est que lorsque j'insère une occurence dans la table personne, il faut impérativement que je l'insère soit dans la table client, soit dans la table fournisseur mais étant donné que l'identifiant est généré de manière automatique, je ne sais pas lequel mettre dans la table hérité.
Je ne vois absoluement pas comment le récupérer.!!!!!!!!!!!
(je tiens à éviter une requête select sur les attributs de la personne nouvellement insérer pour des raisons d'homonymie)
 
 
a l'aide

mood
Publicité
Posté le 05-08-2004 à 16:17:56  profilanswer
 

n°816115
boulax
Inserer phrase hype en anglais
Posté le 05-08-2004 à 16:23:00  profilanswer
 

Jeuneloup a écrit :


J'ai une base de donnée sql server avec une trois tables.
La premiere table est la table "personne" et les deux autres sont respectivement "client" et "fournisseur".
L'identifiant de la table personne est un numéro automatique.
Etant donné que les entités client et fournisseur sont des héritages de la table personne, leur identifiant est celui qui se trouve dans la table personne.


 
Tu as un "concept" d'heritage qui apparait sur le MCD donc, mais dans ta base cela aurait du se traduire par 2 tables 'Client' et 'fournisseurs ' heritant des attributs de personnes + ayant leurs attributs perso...
Enfin c'est comme ca que j'aurai fait ...


---------------
Posté depuis des chiottes, sales. Me gusta.
n°816120
fb@alphalo​g
Posté le 05-08-2004 à 16:25:00  profilanswer
 

en sql server n 'y aurait i pas une fonction comme le last_insert_id() du couple php + mysql ?

n°816121
Jeuneloup
Posté le 05-08-2004 à 16:26:12  profilanswer
 

Bonjour,
 
C'est pas comme ça que je fais, sinon ça crée des redondances de données inutilement.

n°816122
Jeuneloup
Posté le 05-08-2004 à 16:27:17  profilanswer
 

Bonjour,
 
Je ne connais pas cette fonction last_insert_id(), peux-tu m'en dire plus?
 
merci.

n°816127
boulax
Inserer phrase hype en anglais
Posté le 05-08-2004 à 16:29:34  profilanswer
 

Jeuneloup a écrit :

Bonjour,
 
C'est pas comme ça que je fais, sinon ça crée des redondances de données inutilement.


 
Non, a moins qu'un de tes clients soit aussi ton fournisseur.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°816137
Jeuneloup
Posté le 05-08-2004 à 16:37:33  profilanswer
 

Bonjour boulax,
 
C'est effectivement le cas.
 
Merci.

n°816143
boulax
Inserer phrase hype en anglais
Posté le 05-08-2004 à 16:42:00  profilanswer
 

Bonjour,
 
t'es un robot ?
 
merci, au revoir
 
Bon sans rire, regarde dans ta doc sql server ou dans celle de l'api avec laquelle tu fais tes requetes depuis un programme (si c'est le cas) et regarde si tu trouves la fonction last_insert_id ou un truc qui ressemble.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°816150
Jeuneloup
Posté le 05-08-2004 à 16:47:18  profilanswer
 

Je pense être surtout poli avec les gens qui prennent le temps de me répondre.

n°816199
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-08-2004 à 17:51:03  profilanswer
 

insert into fesse (pet) values ('prout')
select SCOPE_IDENTITY()
 
Cf l'aide de SQL Server comme l'a stipulé Boulax :
 

Citation :


 Référence de Transact-SQL  
 
 
SCOPE_IDENTITY
Renvoie la dernière valeur IDENTITY insérée dans une colonne IDENTITY dans la même étendue. Une étendue est un module, tel qu'une procédure stockée, un déclencheur, une fonction ou un lot. Ainsi, deux instructions sont dans la même étendue s'ils se trouvent dans la même procédure stockée ou fonction, ou dans le même lot.
 
Syntaxe
SCOPE_IDENTITY( )
 
Type des valeurs renvoyées
sql_variant
 
Notes
SCOPE_IDENTITY, IDENT_CURRENT et @@IDENTITY sont des fonctions similaires dans la mesure où elles renvoient les valeurs insérées dans les colonnes IDENTITY.  
 
IDENT_CURRENT n'est pas limitée au niveau de l'étendue et la session, car elle est restreinte à une table spécifiée. IDENT_CURRENT renvoie la valeur générée pour une table spécifique dans n'importe quelles session et étendue. Pour plus d'informations, voir IDENT_CURRENT.
 
SCOPE_IDENTITY et @@IDENTITY renvoient les dernières valeurs d'identité générées dans une table de la session en cours. Toutefois, SCOPE_IDENTITY renvoie les valeurs insérées uniquement dans l'étendue actuelle. @@IDENTITY n'est pas restreinte à une étendue spécifique.
 
Par exemple, vous disposez de deux tables (T1 et T2) et d'un déclencheur INSERT défini dans T1. Lorsqu'une ligne est insérée dans T1, le déclencheur s'active et insère une ligne dans T2. Ce scénario illustre deux étendues : insertion dans T1 et insertion dans T2 (action résultante du déclencheur).
 
Supposons que T1 et T2 incluent des colonnes IDENTITY : @@IDENTITY et SCOPE_IDENTITY renvoient des valeurs différentes à la fin d'une instruction INSERT dans T1.
 
@@IDENTITY renvoie la dernière valeur de la colonne IDENTITY insérée dans toute étendue au cours de la session actuelle, ce qui correspond à la valeur insérée dans T2.
 
SCOPE_IDENTITY() renvoie la valeur IDENTITY insérée dans T1, ce qui correspond à la dernière instruction INSERT exécutée dans la même étendue. La fonction SCOPE_IDENTITY() renvoie la valeur NULL si la fonction est invoquée avant que toute instruction INSERT dans une colonne d'identité ne soit exécutée dans l'étendue.
 
Les exemples suivants illustrent ce scénario.
 
Exemple
L'exemple suivant crée deux tables, TZ et TY, et place un déclencheur INSERT dans TZ. Lorsqu'une ligne est insérée dans la table TZ, le déclencheur (Ztrig) s'active et insère une ligne dans TY.
 
USE tempdb
GO
CREATE TABLE TZ (
   Z_id  int IDENTITY(1,1)PRIMARY KEY,
   Z_name varchar(20) NOT NULL)
 
INSERT TZ
   VALUES ('Lisa')
INSERT TZ
   VALUES ('Mike')
INSERT TZ
   VALUES ('Carla')
 
SELECT * FROM TZ
 
--Result set: This is how table TZ looks
Z_id   Z_name
-------------
1      Lisa
2      Mike
3      Carla
 
CREATE TABLE TY (
   Y_id  int IDENTITY(100,5)PRIMARY KEY,
   Y_name varchar(20) NULL)
 
INSERT TY (Y_name)
   VALUES ('boathouse')
INSERT TY (Y_name)
   VALUES ('rocks')
INSERT TY (Y_name)
   VALUES ('elevator')
 
SELECT * FROM TY
--Result set: This is how TY looks:
Y_id  Y_name
---------------
100   boathouse
105   rocks
110   elevator
 
/*Create the trigger that inserts a row in table TY  
when a row is inserted in table TZ*/
CREATE TRIGGER Ztrig
ON TZ
FOR INSERT AS  
   BEGIN
   INSERT TY VALUES ('')
   END
 
/*FIRE the trigger and find out what identity values you get  
with the @@IDENTITY and SCOPE_IDENTITY functions*/
INSERT TZ VALUES ('Rosalie')
 
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
GO
SELECT   @@IDENTITY AS [@@IDENTITY]
GO
 
--Here is the result set.
SCOPE_IDENTITY
4
/*SCOPE_IDENTITY returned the last identity value in the same scope, which was the insert on table TZ*/
 
@@IDENTITY
115
/*@@IDENTITY returned the last identity value inserted to TY by the trigger, which fired due to an earlier insert on TZ*/
 
 
Voir aussi
 
@@IDENTITY
 
©1988-2000 Microsoft Corporation. Tous droits réservés.


Message édité par Arjuna le 05-08-2004 à 17:58:03
mood
Publicité
Posté le 05-08-2004 à 17:51:03  profilanswer
 

n°816225
Jeuneloup
Posté le 05-08-2004 à 18:53:30  profilanswer
 

Comme promis, je ne dis plus bonjour, ni merci en fin de message ;)
 
effectivement couplé avec les transactions cela résoud mon problème.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  HELP!!!!!!!!Problème Sql Server sous vb.net!!!!!!!!

 

Sujets relatifs
[C#] Connection Server SQL[Java] Problème de taille mémoire avec un JTree
problème avec for_eachProblème en visual basic - TabOrder --> Résolu
[HELP] Estimation et conseil sur un projet PHP...Problème d'accès ODBC (ACCES+ORACLE)
Requete SQL avec Builder C++ 6probleme configurartion serveur apache pour php
[VBS/VBA] Probleme avec after et before ds un vbs 
Plus de sujets relatifs à : HELP!!!!!!!!Problème Sql Server sous vb.net!!!!!!!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR