|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
Bonjour, voici mon problème :
J'aimerais créer une PROCEDURE ou FONCTION, qui créerais un TRIGGER, lui même créant une temporisation pour un INSERT INTO. Le problème réside dans le fait que l'une des données insérée est un SYSDATE (format DD/MM/YYYY HH24:MI:SS) J'aimerais que chaque données enregistrée ai son SYSDATE comme donnée unique (pas avoir 2 INSERT INTO avec la même date). Pour cela j'ai déjà créé un code que voici : Code SQL :
Mon TRIGGER me fait bien une temporisation de 2 secondes entre chaque données insérées, mais ils ont tous la même date. Par la suite, j'aimerais en faire une procédure, pour que le TRIGGER se créé puis se supprime, j'ai testé, mais il n'aime pas les CREATE :/ Merci par avance. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
Même résultat avec le CURRENT_TIMESTAMP
Ils ont tous la même date |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Sysdate est évalué une fois pour le select même s'il est long :
http://asktom.oracle.com/pls/apex/f?...86300346043715 Tu peux incrémenter la date d'1s artificiellement dans le select en faisant : sysdate + rownum/24/60/60 |
|
|
20
|
|
|
#5 |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Rassurez-nous, vous n'envisagez pas de mettre une telle bidouille en production ?
Parce que franchement, c'est une idée de shadock ! Il suffit de définir une clé primaire numérique et de l'alimenter par une séquence, et vous n'aurez pas de problème d'unicité.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#6 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
La solution sysdate + rownum/24/60/60 semble fonctionner pour une 20aine de données.
Citation:
Je n'ai jamais eu à faire cela ! MAJ : Ah, je pense voir ce que vous voulez dire : une incrémentation numérique Non ce n'est pas le but. En faite, si je met une date provisoire dans la date, c'est pour une autre procédure. Celle ci fera une nouvelle mise à jour grâce à cette date, il la prendra et la mettra sous cette forme : AAAAMMJJHHMMSS. Et cette donnée sera insérée dans une autre table, et sera sa clef primaire. Donc si la date est identique dans la table nommé TMP, cela aura une incidence pour une autre table qui en aura besoin pour sa clef primaire. Je ne sais pas si j'ai été clair :/ |
|
|
|
00
|
|
|
#7 |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Impec !
La solution de skuatamad me paraît excellente dans ce cas.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Oui, bien sûr qu’ils ont la même date mais ce n’est pas la même fractionne de seconde.
Code :
|
||
|
|
10
|
|
|
#9 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
Citation:
Le reste on ne l'utilise pas, et d'ailleurs j'ai créé une clef de registre pour n'afficher que cela. Merci à skuatamad ta solution fonctionne à merveille et est très rapide (pas besoin d'avoir une attente de 2 secondes à chaque INSERT). Je me suis encore pris la tête a vouloir faire une procédure qui créé un trigger pour ensuite le supprimer ^^ Merci à tous |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com