Question

Bonjour,

J'ai une question sur les valeurs par défaut et valeurs NULL dans Sybase ASE 12. Pour faire une longue histoire courte: j'ai hérité d'une base de données très ancienne Sybase ainsi que l'extrémité avant de PowerBuilder qui se trouve au-dessus de celui-ci. L'une des tables en question contient plusieurs colonnes qui ont des valeurs par défaut, ainsi que la contrainte non nulle. Ainsi, chaque fois aucune valeur (note: pas une valeur NULL) est fournie, PowerBuilder crée l'instruction d'insertion / mise à jour appropriée et ne passe pas seulement une valeur pour ces champs vides, qui sont ensuite affectés automatiquement la valeur par défaut de la base de données. Gravy.

Maintenant, le problème: Il a été décidé d'ajouter l'audit à l'ensemble de l'application par l'extrémité avant (une mauvaise idée, je sais, mais pas mon choix). Une fonction a été écrit pour abstraire le processus de vérification, mais le problème vient du fait qu'il ne voit pas d'entrée d'utilisateur en tant que valeurs NULL et génère une instruction d'insertion dans la table d'audit (également défini avec la contrainte non nulle), fournissant NULL littérale pour ces colonnes vides. Sybase voit alors le NULL littéral et, comme vous le savez tous, la traite NULL comme une valeur et non « pas d'entrée ».

La question: est-il possible par défaut une entrée NULL à une valeur par défaut du côté de la base de données? Je l'ai considéré comme déclencheurs, mais je suis en espérant que je vais avoir de la chance et là, je peux serai une certaine forme de construction au niveau de la table qui utilisent.

Merci pour votre temps et considération.

Références: Un bon exemple de la question en question
http: //www.sybaseteam .com / null-ne-rien-différence entre-nulle-rien-sybase-t-390.html

Voir le tableau 7-1, à mi-chemin en bas de la page.
http : //manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link; pt = 20741 target =% 25N% 15_19279_START_RESTART_N% 25

Était-ce utile?

La solution

Je pense que vous devez rendre votre plus intelligent de la fonction d'audit. Il ne doit enregistrer les colonnes que l'utilisateur a changé. Cela est facile à déterminer avec getitemstatus. Vous pouvez faire une boucle à travers les colonnes à l'aide de la forme d'getitemstatus qui prend un certain nombre de colonnes de nombre entier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top