|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : juin 2006 Messages : 217 ![]() |
Bonjour
Je voulais savoir si il serait possible de créer une fonction SQL SERVER qui me récupéré le dernière id de la table en me l’incrémentent de 1. l'id de la table est un varchar(36) (Je ne peux pas le changer). merci d'avance. |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
il faudrait pourtant ! sinon la solution serait quelque chose du genre : Code SQL :
m'enfin... déjà qu'avec un bon vieux INT, la méthode n'est pas la mieux, mais alors avec un VARCHAR (de 36 qui plus est ) ça risque d’être catastrophique... d'autre part, si vous avez réellement des nombre de 36 chiffres, vous allez avoir un dépassement de capacités, même avec un bigint ! que representent ces varchar(36) ? Quand vous dites que vous ne pouvez pas le changer, ne pouvez vous pas non plus ajouter un colonne INT (ou BIGINT) qui pourrait servir de clef primaire ? ce serait nettement mieux ! |
||
|
|
10
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : juin 2006 Messages : 217 ![]() |
Enfaite il faut que je transfert des données d'une base à une autre.
L'ID est normalement générer par le logiciel quand on créer un membre ou autre donc il appelle une fonction qui est create_guid. Seulement le problème est que moi je fais des insert et update sur la base et du coup les ids ne sont pas toujours présent Exemple si il y a une table membre dans les deux base ceci ne pose pas de problème car je copie aussi l'id. Mais si dans la base cible j'ai une table mail que je n'ai pas dans la base source il n'y a pas id donc il faut que je le génère. Citation:
Citation:
|
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Comment voulez-vous incrémenter un littéral ???? Cela n'a pas de sens !
La base ayant été mal modélisée, le seul remède est de bien la modéliser. En informatique il n'y a pas de miracle : garbage in, garbage out comme disent les ricains.... QUi peut se traduire par : si t'as de la merde en entrée, tu auras de la merde en sortie ! Commencez donc par modéliser correctement votre base. De plus un VARCHAR c'est contre performant pour une clef, et en sus 36 de longueur c'est plus que stupide, sauf si vous avez décidé de tuer sciemment les performances ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Citation:
Chui pas prêt de recommander SugarCRM ... Citation:
Comme on n'est pas avec une valeur entière, et qu'il me semble que le type est uniqueidentifier, vous pouvez générer des valeurs avec les fonctions NEWID() et NEWSEQUENTIALID(), la seconde étant à peine un peu mieux pour les clés primaires. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
10
|
|
|
#6 | |||
|
Futur Membre du Club
![]() Inscription : juin 2006 Messages : 217 ![]() |
Citation:
Citation:
Moi ce que je sais, c'est que à défaut d'avoir de la "merde en sortie" j'ai une NOTE à la sortie. Expliquer moi comment je peux changer la base sans toucher au logiciel ??? Citation:
|
|||
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Donc, la réponse à votre question primale est NON.
Et si vous devez avoir une note, c'est 20 sur 20, si vous me répondez non ! A partir du moment ou la question est absurde, aucune solution n'est possible ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
01
|
|
|
#8 | |||
|
Futur Membre du Club
![]() Inscription : juin 2006 Messages : 217 ![]() |
J'ai demandais une solution j'ai pas poser de question.
Citation:
Citation:
Qu'il y a aucun algorithme qui peut me générer une clé unique ? Vous avez pas répondue à ma question. Citation:
|
|||
|
|
00
|
|
|
#9 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Elsuket vous a donné la solution, ou plutôt UNE solution...
SugarCRM propose aussi des API, et expose surement sa fonction de génération de clef... mais d'après ce que dit la doc de sugarCRM : Citation:
Code SQL :
|
|||
|
|
10
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : juin 2006 Messages : 217 ![]() |
Oui merci cela marche très bien.
|
|
|
00
|
|
|
#11 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Citation:
Il est possible de transtyper cette valeur de type uniqueidentifier en char(36) ... mais à ce moment là, la valeur de type char(36) occupe ... 36 octets (1 octet par caractère en ASCII Citation:
![]() @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com