Pregunta

Buenos días

Tengo una pregunta con respecto a los valores predeterminados y los valores NULL en Sybase ASE 12. Para abreviar la historia: he heredado una base de datos Sybase muy antigua, así como la interfaz de PowerBuilder que se encuentra encima. Una de las tablas en cuestión contiene varias columnas que tienen valores predeterminados, así como la restricción no nula. Por lo tanto, siempre que no se proporciona ningún valor (nota: no es un valor NULO), PowerBuilder crea la declaración de inserción / actualización adecuada y simplemente no pasa un valor para estos campos vacíos, que luego la base de datos asigna automáticamente el valor predeterminado. Salsa.

Ahora, el problema: se decidió agregar auditoría a toda la aplicación a través de la interfaz (una mala idea, lo sé, pero no es mi elección). Se escribió una función para abstraer el proceso de auditoría, pero el problema surge del hecho de que no ve ninguna entrada de usuario como valores NULL y genera una declaración de inserción en la tabla de auditoría (también definida con la restricción not null), proporcionando el literal NULL para estas columnas vacías. Luego, Sybase ve el literal NULL y, como todos saben, trata el NULL como un valor y no como 'ninguna entrada'.

Entonces, la pregunta: ¿es posible establecer una entrada NULL en valores predeterminados desde el lado de la base de datos? He considerado los disparadores, pero espero tener suerte y habrá algún tipo de construcción a nivel de tabla que pueda utilizar.

Gracias por su tiempo y consideración.

Referencias:
Un buen ejemplo del problema en cuestión
http://www.sybaseteam .com / null-not-nothing-difference-between-null-nothing-sybase-t-390.html

Consulte la tabla 7-1, en la mitad de la página.
http : //manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link; pt= 20741? target=% 25N% 15_19279_START_RESTART_N% 25

¿Fue útil?

Solución

Creo que debe hacer que su función de auditoría sea más inteligente.Solo debe registrar las columnas que el usuario cambió.Esto es fácil de determinar con getitemstatus.Puede recorrer las columnas usando la forma de getitemstatus que toma un número de columna entero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top