Verwenden eines Standardwerts für die Null-Eingabe in Sybase
-
27-10-2019 - |
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
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.