Frage

Guten Morgen

Ich habe eine Frage zu Standardwerten und NULL-Werten in Sybase ASE 12. Um es kurz zu machen: Ich habe eine sehr alte Sybase-Datenbank sowie das darauf befindliche PowerBuilder-Frontend geerbt. Eine der fraglichen Tabellen enthält mehrere Spalten mit Standardwerten sowie der Nicht-Null-Einschränkung. Wenn also kein Wert (Hinweis: kein NULL-Wert) angegeben wird, erstellt PowerBuilder die entsprechende Einfüge- / Aktualisierungsanweisung und übergibt einfach keinen Wert für diese leeren Felder, denen dann automatisch der Standardwert von der Datenbank zugewiesen wird. Soße.

Nun das Problem: Es wurde beschlossen, die gesamte Anwendung über das Front-End zu überwachen (eine schlechte Idee, ich weiß, aber nicht meine Wahl). Eine Funktion wurde geschrieben, um den Prüfungsprozess zu abstrahieren. Das Problem ergibt sich jedoch aus der Tatsache, dass sie keinen Benutzereintrag als NULL-Werte sieht und eine Einfügeanweisung in die Prüftabelle generiert (ebenfalls mit der Nicht-Null-Einschränkung definiert), die das Literal NULL liefert für diese leeren Spalten. Sybase sieht dann das Literal NULL und behandelt, wie Sie alle wissen, das NULL als Wert und nicht als 'kein Eintrag'.

Also die Frage: Ist es möglich, einen NULL-Eintrag standardmäßig auf einen Standardwert von der Datenbankseite zu setzen? Ich habe über Trigger nachgedacht, aber ich hoffe, dass ich Glück habe und es eine Form von Konstrukten auf Tabellenebene gibt, die ich verwenden kann.

Vielen Dank für Ihre Zeit und Ihre Rücksichtnahme.

Referenzen:
Ein gutes Beispiel für das betreffende Problem
http://www.sybaseteam .com / null-nicht-nichts-Unterschied-zwischen-null-nichts-sybase-t-390.html

Siehe Tabelle 7-1 auf halber Höhe der Seite.
http : //manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link; pt= 20741? target=% 25N% 15_19279_START_RESTART_N% 25

War es hilfreich?

Lösung

Ich denke, Sie müssen Ihre Prüfungsfunktion intelligenter gestalten.Es sollten nur die Spalten protokolliert werden, die der Benutzer geändert hat.Dies ist mit getitemstatus leicht zu bestimmen.Sie können die Spalten mit der Form eines getitemstatus durchlaufen, der eine ganzzahlige Spaltennummer annimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top