|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 15 ![]() |
Bonjour,
J'ai effectué une recherche sans succès sur ce thème, donc j'ouvre un nouveau sujet. Je voulais savoir s'il était possible techniquement de faire un "CREATE TABLE" à l'intérieur d'un trigger sur l'update d'un champ ? Le compilateur m'envoie ballader donc j'aimerais savoir si ça sert à quelque chose que je m'acharne dessus ou pas. |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : mai 2007 Messages : 385 ![]() |
Merci de spécifier ta vesion Oracle...
Pourrais-tu nous envoyer le code de ton trigger ? LBO72. |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 15 ![]() |
Je m'entraîne sur l'application APEX disponible en ligne sur le site d'Oracle.
Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
EXECUTE IMMEDIATE est ton ami
|
|
|
00
|
|
|
#5 |
![]() Inscription : décembre 2002 Messages : 2 397 ![]() |
Bonjour
Techniquement, il faut que vous utilisiez une transaction autonome. Faites une recherche dans le forum sur AUTONOMOUS_TRANSACTION. Fonctionnellement, votre besoin paraît à première vue douteux. Vous pouvez préciser votre contexte ?
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 10 ![]() |
Ma question peut parètre idiote mais pourquoi créer un table à chaque insertion ou mise à jour dans une autre table ?
Cela peut être interessant de savoir pour trouver une solution différente de ton traitement. |
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 15 ![]() |
Merci, je vais y jeter un coup d'oeil
Citation:
Je confirme que cela n'a aucun intérêt, juste des tests, aucune application concrète de prévue derrière. Sinon je précise, que le nom de la table changera à chaque insertion. |
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 15 ![]() |
J'ai essayé le "execute immediate" et j'ai ce retour d'erreur :
Je vais essayer le "autonomous transaction" pour voir si ça change quelque chose. |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : mai 2007 Messages : 385 ![]() |
Je ne pense pas qu'on puisse faire un execute immediate dans un trigger !
LBO72. |
|
|
00
|
|
|
#10 |
![]() Inscription : décembre 2002 Messages : 2 397 ![]() |
Bon, clarifions les choses pour ne pas voir fleurir les supputations fumeuses...
On veut ici créer une table au sein d'un déclencheur. Pour ce faire, on doit résoudre deux problèmes : - le fait qu'en PL/SQL, (et donc en particulier dans un déclencheur) on ne peut pas exécuter directement d'instructions DDL, telles que CREATE TABLE. Il faut effectivement utiliser la syntaxe EXECUTE IMMEDIATE. - le fait que dans un déclencheur standard, le COMMIT (explicite ou non) est interdit. Or une instruction DDL provoque un COMMIT implicite avant de s'exécuter. On peut s'en sortir en utilisant une transaction autonome. Il faut donc, au sein d'une transaction autonome, créer la table via EXECUTE IMMEDIATE.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com