|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
salut,
j'ai creer ce trigger Code :
Mais que je fais un insert Code :
INSERT INTO test1 (clé,charcol) VALUES (1,'') Citation:
Code :
CREATE TABLE test1 (clé integer,charcol varchar(5) NOT NULL); est ce que quelqu'un pourrait m'eclairer ? Merci |
|||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Le message d'erreur est pourtant clair : votre trigger est invalide.
Faites : et vous devriez pouvoir comprendre votre problème.
__________________
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
|
|
|
#3 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
ceci serait mieux:
Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
bon je sais, tu vas encore être dégouté, mais je pense que j'ai l'explication à ton problème....
Comme tu le sais (et que tu le déplore...) '' veux dire null pour un varchar, et comme le test "machin = null" renvoi toujours faux en oracle, -> le test ":NEW.charcol='' " renverra toujours FAUX, il faut donc le remplacer par "":NEW.charcol is null " |
|
|
00
|
|
|
#5 | |||
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
je l'ai modifier comme cela et j'ai toujour le meme message d'erreur
Code :
Citation:
|
|||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
il compile pas ton trigger, avec quel outil tu le traites ? tu as mis " :NEW.charcol='v'; " au lieu de " :NEW.charcol:='v';"
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
ouai exact c'etait le :=; merci
et j'ai essayer avec is null et sa fonctionne et je crois que tu a raison sa vien du '' comme il le considere comme un null bin sa bogue dommage j'aurai essayer |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
supposons que je veuille ajouter une chaine de caractere = à ''
je peu faire cela sous oracle quelle est le caractere echapatoire ? parceque quand je fais cela je n'ai qu'une seule quote à l'affichage au lieu de 2 |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
c'est comme en basic, il faut doubler les cotes pour qu'il n'y en ai qu'une donc pour qu'il en insère 2, il faut que tu en mettes 4 (+ les 2 délimteurs = 6)
|
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
ok je te remercie
c'etait bien cela et c'est possible à ton avis de faire un :NEW.*, pour lui dire de prendre tous les champs ou de lui specifier que les champs qui on la contrainte not null ? si c'est le cas j'aimerai bien le faire dans mon trigger |
|
|
00
|
|
|
#11 | |||
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
j'ai modifier mon trigger pour qu'il soit dynamique;donc j'ai mis un curseur dedans afin de faire une requete et recuperer le nom des champs qui sont à not null mais ça bogue
Code :
je vois ce qui est pas valide Citation:
|
|||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Y'a de l'idée mais ça ne peux pas marcher parcque tu fais une allocation dynamique de ton nom de colonne :NEW, ce que PL/SQL ne prends pas en compte...
à priori je sèche, je vois pas comment ça serait possible de faire du dynamique dans ce genre de chose...
|
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
donc comme j'utilise :NEW je suis obliger de lui mettre le nom de la colonne en dure juste apres et pas le nom de la colonne que je recupere à l'aide de mon curseur.
c'est bien cela ? |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
oui, à priori je vois pas comment tu pourrais faire autrement...
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Quoi que, y'a toujours moyen en montant une usine à gaz mais bon...
A l'extrème limite, tu pourrais faire une fonction qui te génère ton code de création de trigger à passer à chaque fois que tu modifie la structure des tables....
|
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 277 ![]() |
mes donnée je les recupere d'un fichier
donc dans le fichier j'aurai des champs à null et des champs à '' , d'atre à ' '... et d'autre avec des valeurs donc le length(:NEW.column_name)=0 quand j'aurai un null et '' si je reflechis bien;donc au final dans oracle mes null et '' de mon fichier seront des ''. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com