Question How can I find which program update value of a field

Hi,

I have a field that changes value but I can't find which program made the change. Is there a way to find it. A log or create a trigger ?

thank you
 

Cringer

ProgressTalk.com Moderator
Staff member
There is no inherent way to retrieve this information. You could create a write trigger on the table and capture the stack trace at the point of change.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
If your clients tend to remain connected persistently you can query _UserTableStat to see which clients have updates on that table. Knowing that information there are ways to track what that client is doing, e.g. using client database request statement caching, starting the client with -yx, starting the client with -qryinfo, etc. The -yx parameter gives you a file called proc.mon that contains a list of programs run. A corss reference compile of those programs gives you a list of which programs could have updated the table, assuming you aren't dealing with dynamic queries.

You could also find the user by using OpenEdge Auditing and create a policy to audit updates on that table or field.

You could also find the user by parsing your archived after image extents with aimage scan verbose; you would need to know the table's storage area number and a list of its dbkeys. This would only be practical with Type II storage, or maybe Type I where the table has its own area.

Which of these approaches are available to you depends on your version of OpenEdge. Which are practical depends somewhat on your application.
 
Top