質問

おはようございます

Sybase ASE 12のデフォルト値とNULL値について質問があります。簡単に言うと、非常に古いSybaseデータベースと、その上にあるPowerBuilderフロントエンドを継承しています。問題のテーブルの1つには、デフォルト値と非NULL制約を持ついくつかの列が含まれています。したがって、値が指定されていない場合(注:NULL値ではない)、PowerBuilderは適切な挿入/更新ステートメントを作成し、これらの空のフィールドに値を渡さないだけで、データベースによってデフォルト値が自動的に割り当てられます。グレイビー。

問題:フロントエンドを介してアプリケーション全体に監査を追加することが決定されました(悪い考えですが、私の選択ではありません)。関数は監査のプロセスを抽象化するために作成されましたが、問題は、ユーザーエントリをNULL値として認識せず、監査テーブルに挿入ステートメントを生成し(null以外の制約で定義されます)、リテラルNULLを提供するという事実から発生しますこれらの空の列に対して。次に、SybaseはリテラルNULLを認識し、ご存知のとおり、NULLを「エントリなし」ではなく値として扱います。

では、質問:データベース側からNULLエントリをデフォルト値にデフォルト設定することは可能ですか?トリガーを検討しましたが、幸運に恵まれ、利用できる何らかの形式のテーブルレベルの構成が存在することを望んでいます。

お時間を割いてご検討いただきありがとうございます。

参照:
問題の問題の良い例
http://www.sybaseteam .com / null-not-nothing-difference-between-null-nothing-sybase-t-390.html

ページの途中で表7-1を参照してください。
http ://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link; pt= 20741?target=%25N%15_19279_START_RESTART_N%25

役に立ちましたか?

解決

監査機能をよりスマートにする必要があると思います。ユーザーが変更した列のみをログに記録する必要があります。これは、getitemstatusを使用して簡単に判別できます。整数の列番号をとるgetitemstatusの形式を使用して、列をループできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top