|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() |
salut ,
voila j'ai créé une séquence démarrant avec 1 tout ce qui ya de plus basique. mais , comme je voudrais que la séquence se réinitialise (genre reset séquence) j'ai sus qu'il fallait utiliser la clause InCrement by -(la valeur courante) pour avoir le nextval a 1(puis remettre increment by 1). mais , quand c'est pour réinitialiser suite a un contrôle . je doit rendre le dynamique. genre même si je ne connais pas la valeur courante . et après quelque essais , je patine au niveau syntaxe j'arrive pas a valider la valeur courante en tant que nombre d'incrementation. exemple (grossier): Code :
ALTER seqeunce seqtest increment BY -(SELECT seqtest.currval FROM dual) |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
pourquoi ne pas simplement effacer et recréer la séquence?
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() |
ben,
ce code doit etre implementé sur forms ?a vrais dire. il participe a un code articulé ("mmyy"-seqtest). donc dans mon apli je doit verifier tout le temp quel moi en est et au changement du moi la sequence se reinitialise . mais si , je doit recreer la sequence chaque mois , je devrais le faire depuis sqplus alors , pas depuis forms remarque ! est ce que recreer ca ne consome pas plus de temp que de reinitialiser ? merci de m'eclairer |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
je ne vois pas l'avantage de faire alter plutôt que drop/create...
Forms permets le "alter" et pas le "create"? bizarre... |
|
00
|
|
|
#5 |
|
Membre régulier
![]() |
ben ,
non j'ai pas dit ça (du tout) .forms permet peut être de faire des ddl avec la clause form_ddl(..); mais , selon toi (vous) , recréer vaut autant que l'alter ,ou?. je voulais juste savoir, si ça ne coûtais pas plus de temps l'exécution(que d'alterer). ROGGER |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
La différence doit être minime. Cela ne doit donc pas être un critère.
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
perso je trouve le drop/create plus simple, à toi de voir
|
|
00
|
|
|
#8 | |
|
Membre régulier
![]() |
donc ,
elle sera drop créer chaque mois ! entre autre , pourriez vous m'orienter syntaxiquement. je vais donc comparer (a l'aid d'un triger)sous forms chaque ouverture . le mois actuel et celui du code articulé . en gros : Citation:
En prime , je voudrais savoir quand on a une séquence sur une colonne ! si ça serait possible de mettre un trigger de base de donnée INSTEAD OF INSERT pour faire qu'a chaque insertion l'identifiant s'insère depuis la séquence ! si c'est pas le cas conseilliez moi! |
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
je ne connais pas la syntaxe forms, mais dans plsql, tu fais qqchose comme
Code :
execute immediate 'drop sequence s'; execute immediate 'create sequence s'; quant au trigger, c'est possible, mais ce n'est pas un INSTEAD OF trigger. Les instead of, c'est sur des vues. http://oracle.developpez.com/faq/?pa...#autoincrement |
|
00
|
|
|
#10 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
si tu as une version récente tu peux aussi faire
Code :
|
||
|
00
|
|
|
#11 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
plutôt :
Code :
|
||
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
une version récente = 11g
http://download.oracle.com/docs/cd/B...c.htm#BABDDFGI Code :
|
||
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
|
|
|
00
|
|
|
#14 | |
|
Membre régulier
![]() |
Premièrement,
je tient a m'excuser pour la version (c'est vrai ). c'est la version 9.2 i (et 10g pour le developper). donc pas une version récente (10g si je comprend bien pour la premiere question : je fait la commande exécute imediate dans ma clause ddl " Code :
execute immediate 'drop sequence s'; execute immediate 'create sequence s';" et pour la séquence simple :je fait comme fred: Citation:
si cetait le cas au moment du "drop seqtest" , le trigger ne péterait pas par hasard ! |
|
|
|
00
|
|
|
#15 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
non, soit tu recrées soit tu incrémentes de nextval après avoir changer le pas d'incrément comme ça :
Code :
|
||
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
c'est une bonne remarque, mais il pêterait aussi avec alter (en tout cas dans vos versions préhistoriques...)
en fait, il est invalidé, mais au prochaine insert il sera recompilé. pour que ça soit plus propre, tu peux ajouter après drop sequence / create sequence |
|
00
|
|
|
#17 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Code :
|
||
|
00
|
|
|
#18 | |
|
Membre régulier
![]() |
donc ,
j'ai l'embarras du choix , et franchement vous êtes top gentils (merci pour le code , qui plus est a été exécute). J'utilise seulement l'un des codes sis dessus(soit drop soit alter). Citation:
|
|
|
|
00
|
|
|
#19 | |
|
Membre régulier
![]() |
bonjour ,
merci pour vos code ca marche impec , j'ai finalement choisit l'alter au lieu du drop (a tester sur forms) qui marche sur sqlplus*. mais , comme mon apetit grandit : j'ai donc une question: supposons que j'ai des client de concessionnaire repartie sur 3service(vente,pièce détache , SAV). serait il possible (j'ai essayé en vain).de mettre un trigger BEFOR INSERT qui rajoutera un caractère Citation:
A Vous les gars !Merci molto molto |
|
|
|
00
|
|
|
#20 |
|
Membre régulier
![]() |
salut ,
sauf , si j'abondone ALORS PAS D'idée sur la question . Même pas une allez ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com