Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis
toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle
lors de l'insertion de lignes, et le problème se pose pour récupérer la clé
primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server
pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne
connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT
MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le
programme, qui sera utilisé comme clé primaire de la ligne insérée. En
théorie ça marche, mais apparemment ça risque de poser des problèmes de
performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les
clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli
professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis.
--
To reply, remove a "l" before the @ sign.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bruno reiter [MVP]
Pour avoir un comportement similaire, je pense qu'il vaut mieux utiliser un trigger avec un champ de type int. par trigger tu modifies pour prendre la 1ere valeur dispo.
br
"AW" wrote in message news:
Bonjour,
Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle lors de l'insertion de lignes, et le problème se pose pour récupérer la clé primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le programme, qui sera utilisé comme clé primaire de la ligne insérée. En théorie ça marche, mais apparemment ça risque de poser des problèmes de performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis. -- To reply, remove a "l" before the @ sign.
Arnaud Weil - MCT, MCSD.Net, MCAD.Net
Pour avoir un comportement similaire, je pense qu'il vaut mieux utiliser un
trigger avec un champ de type int.
par trigger tu modifies pour prendre la 1ere valeur dispo.
br
"AW" <aweill@fr.xrt.com> wrote in message
news:eoZJusLuDHA.3532@TK2MSFTNGP11.phx.gbl...
Bonjour,
Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis
toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle
lors de l'insertion de lignes, et le problème se pose pour récupérer la clé
primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server
pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne
connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT
MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le
programme, qui sera utilisé comme clé primaire de la ligne insérée. En
théorie ça marche, mais apparemment ça risque de poser des problèmes de
performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les
clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli
professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis.
--
To reply, remove a "l" before the @ sign.
Pour avoir un comportement similaire, je pense qu'il vaut mieux utiliser un trigger avec un champ de type int. par trigger tu modifies pour prendre la 1ere valeur dispo.
br
"AW" wrote in message news:
Bonjour,
Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle lors de l'insertion de lignes, et le problème se pose pour récupérer la clé primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le programme, qui sera utilisé comme clé primaire de la ligne insérée. En théorie ça marche, mais apparemment ça risque de poser des problèmes de performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis. -- To reply, remove a "l" before the @ sign.
Arnaud Weil - MCT, MCSD.Net, MCAD.Net
Fred BROUARD
Dans ce cas, ni l'un ni l'autre, opte pour une table de clef comme indiqué dans cet article : http://sqlpro.developpez.com/ClefsAuto/SQL_ClefsAuto.html
A +
AW a écrit:
Bonjour,
Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle lors de l'insertion de lignes, et le problème se pose pour récupérer la clé primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le programme, qui sera utilisé comme clé primaire de la ligne insérée. En théorie ça marche, mais apparemment ça risque de poser des problèmes de performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis.
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Dans ce cas, ni l'un ni l'autre, opte pour une table de clef comme
indiqué dans cet article :
http://sqlpro.developpez.com/ClefsAuto/SQL_ClefsAuto.html
A +
AW a écrit:
Bonjour,
Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis
toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle
lors de l'insertion de lignes, et le problème se pose pour récupérer la clé
primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server
pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne
connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT
MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le
programme, qui sera utilisé comme clé primaire de la ligne insérée. En
théorie ça marche, mais apparemment ça risque de poser des problèmes de
performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les
clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli
professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis.
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
Dans ce cas, ni l'un ni l'autre, opte pour une table de clef comme indiqué dans cet article : http://sqlpro.developpez.com/ClefsAuto/SQL_ClefsAuto.html
A +
AW a écrit:
Bonjour,
Après avoir parcouru des dizaines de pages sur les GUIDs, je ne suis toujours pas fixé.
Mon but est d'avoir un comportement similaire entre SQL Server et Oracle lors de l'insertion de lignes, et le problème se pose pour récupérer la clé primaire d'une ligne insérée. Je peux utiliser une IDENTITY de SQL Server pour autogénérer la clé, puis faire un SELECT @@IDENTITY, mais Oracle ne connaît pas. Du coup pour Oracle je dois utiliser un trigger puis un SELECT MAX. Ce n'est pas du tout la même manière de faire.
L'idée est donc de générer moi-même (en .net c'est facile) un GUID avec le programme, qui sera utilisé comme clé primaire de la ligne insérée. En théorie ça marche, mais apparemment ça risque de poser des problèmes de performance.
Quelqu'un a-t-il un retour d'expérience? Je compte ainsi transformer les clés primaires de TOUTES mes tables en GUIDs. Il s'agit d'une appli professionnelle, donc avec beaucoup de tables et d'entrées.
Merci pour vos avis.
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
AW
Hi all,
Sorry for my previous post in French, I mistakenly posted it here without translation.
So, the problem: after reading tens of pages about GUIDs, I still don't know what to do.
I would like to get the same behaviour with SQL Server and Oracle when inserting lines. The problem comes when I try to get the primary ID value of a newly inserted line. I can use the IDENTITY type of SQL Server to automatically generate the key, and then get it through a SELECT @@IDENTITY, but Oracle doesn't handle this. So with Oracle I have to use a trigger and the SELECT MAX, but then it's not the same way to do.
So the idea is to generate a GUID myself (easy using the .net framework), that way I will know the ID of the inserted line. Theorically this seems good, but there may be concerns with performance.
Does anybody know how GUIDs perform in real life with SQL Server? I intend to use them for the primary keys of each table in my database. This is for a professionnal application, with many tables and rows.
Thanks for any help. -- To reply, remove a "l" before the @ sign.
Arnaud Weil - MCT, MCSD.Net, MCAD.Net
Hi all,
Sorry for my previous post in French, I mistakenly posted it here without
translation.
So, the problem: after reading tens of pages about GUIDs, I still don't know
what to do.
I would like to get the same behaviour with SQL Server and Oracle when
inserting lines. The problem comes when I try to get the primary ID value of
a newly inserted line. I can use the IDENTITY type of SQL Server to
automatically generate the key, and then get it through a SELECT @@IDENTITY,
but Oracle doesn't handle this. So with Oracle I have to use a trigger and
the SELECT MAX, but then it's not the same way to do.
So the idea is to generate a GUID myself (easy using the .net framework),
that way I will know the ID of the inserted line. Theorically this seems
good, but there may be concerns with performance.
Does anybody know how GUIDs perform in real life with SQL Server? I intend
to use them for the primary keys of each table in my database. This is for a
professionnal application, with many tables and rows.
Thanks for any help.
--
To reply, remove a "l" before the @ sign.
Sorry for my previous post in French, I mistakenly posted it here without translation.
So, the problem: after reading tens of pages about GUIDs, I still don't know what to do.
I would like to get the same behaviour with SQL Server and Oracle when inserting lines. The problem comes when I try to get the primary ID value of a newly inserted line. I can use the IDENTITY type of SQL Server to automatically generate the key, and then get it through a SELECT @@IDENTITY, but Oracle doesn't handle this. So with Oracle I have to use a trigger and the SELECT MAX, but then it's not the same way to do.
So the idea is to generate a GUID myself (easy using the .net framework), that way I will know the ID of the inserted line. Theorically this seems good, but there may be concerns with performance.
Does anybody know how GUIDs perform in real life with SQL Server? I intend to use them for the primary keys of each table in my database. This is for a professionnal application, with many tables and rows.
Thanks for any help. -- To reply, remove a "l" before the @ sign.
Arnaud Weil - MCT, MCSD.Net, MCAD.Net
Miha Markic
Hi AW,
I would prefer numeric PKs. The main reason would be that they are way easier to read for humans and programers :) They are also faster to retrieve from db and other operations (int is 4 bytes while guid is 16 bytes).
-- Miha Markic - RightHand .NET consulting & software development miha at rthand com
"AW" wrote in message news:
Hi all,
Does anybody know how GUIDs perform in real life with SQL Server? I intend to use them for the primary keys of each table in my database. This is for
a
professionnal application, with many tables and rows.
Hi AW,
I would prefer numeric PKs.
The main reason would be that they are way easier to read for humans and
programers :)
They are also faster to retrieve from db and other operations (int is 4
bytes while guid is 16 bytes).
--
Miha Markic - RightHand .NET consulting & software development
miha at rthand com
"AW" <aweill@fr.xrt.com> wrote in message
news:uTtTGWMuDHA.1996@TK2MSFTNGP12.phx.gbl...
Hi all,
Does anybody know how GUIDs perform in real life with SQL Server? I intend
to use them for the primary keys of each table in my database. This is for
a
professionnal application, with many tables and rows.
I would prefer numeric PKs. The main reason would be that they are way easier to read for humans and programers :) They are also faster to retrieve from db and other operations (int is 4 bytes while guid is 16 bytes).
-- Miha Markic - RightHand .NET consulting & software development miha at rthand com
"AW" wrote in message news:
Hi all,
Does anybody know how GUIDs perform in real life with SQL Server? I intend to use them for the primary keys of each table in my database. This is for
a
professionnal application, with many tables and rows.