|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : novembre 2002 Messages : 17 ![]() |
J'ai créé des triggers d'update sur IB 6 (version open source).
Sur plusieurs dizaines de tables, ce type trigger marche, mais pas sur mes trois plus grandes tables. J'aimerais savoir si les triggers sont limités en taille, ou alors les concaténations de chaînes de type varchar. En effet, à l'exécution du trigger, lorsque je fais un update sur ma table, j'ai un string truncation. Voici le code de mon trigger. Note : TRIM2 et QUOTEDSTR sont deux UDFs fournies par défaut par interbase. Voilà, si quelqu'un peut m'aider, merci, sinon, tant pis ! Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Ce message d'erreur arrive en général quand on essaye d'affecter une chaine plus grande que ce que peux contenir la colonne.
Dans votre table REPLICATION combien fait la colonne varchar ? Pour plus de sécurité (mais avec le risque d'enregister qu'une partie de l'information) vous pouvez coupper à la valeur max de votre varchar la chaine affecté. Sinon celà peux provenir également de vos UDF car en entrée elle accepent un varchar d'une certaine longueur et donc si vous essayez de lui envoyer plus vous aurez ce message... Donc vérifiez la déclaration de vos deux fonctions UDF pour voir sir celà ne vient pas de ça non plus. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : novembre 2002 Messages : 17 ![]() |
Vous avez entièrement raison.
Je me suis rendu compte que ma table réplication est suffisamment grande (5000 caractères). Ma déclaration d'udf est également suffisamment grande. Par contre, ça doit venir du fait que j'utilise un PChar, que doit on utiliser comme type de chaîne. Parce que je viens de me rendre compte que ça ne marche pas quand ça dépasse 256 caractères. En tout cas, merci pour votre réponse qui m'a bien aiguillé. |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : novembre 2002 Messages : 17 ![]() |
Oui en fait, dans mon écriture de l'udf, j'avais une fonction qui prenait un cstring 5000. Ca, c'était bon. Mais par contre, derrière, j'avais codé une DLL qui prenait un PChar en paramètre !!! Soit pas plus de 256 !
J'ai donc remplacé le PChar par un array [1..5001] et tout va bien !!! Ouf ! Je suis vraiment nul ! Merci beaucoup en tout cas ! |
|
|
00
|
|
|
#6 | |
|
Membre confirmé
![]() Olivier MuetResponsable de service informatique Inscription : septembre 2003 Messages : 222 ![]() |
Citation:
Un PChar n'a pas à proprement parler de taille, sinon celle nécessaire dans l'OS pour allouer un pointeur ; car un PChar est bel et bien un pointeur Il ne fait donc pas 256 ou 5000, il fait 4 en XP-32 bits et pas 1 de plus. Par contre, il se peut qu'il pointe sur une zone de taille 256 ou 5000 Mais en tous cas, un PChar ne peut être la cause du problème de taille dont tu parles. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com