Kirk,
since I don't have objects yet...
Trigger actions - 1 method
tracking actions (including created and modified) - 4 methods
On Tue, 20 Nov 2018 12:48:01 -0800, Kirk Brooks via 4D_Tech wrote:
> Robert,
> My thoughts on the created by/modified by stuff:
>
> 1) I moved all this to a single object field. I call it '_meta' and it's on
> every table I want to manage.
>
> 2) At a minimum the field has:
>
> {"created"; {"name: "", "date": ""},
>
> "modified"; {"name": "", "date": ""}}
>
> 3) I wrote a few (I think it's 5) methods to manage it. Mainly:
>
> META_UPDATE(ptr to _meta field) // generally in table trigger code
>
> // figures out the table and trigger event then update _meta
>
> Meta_get_text(object) -> returns a pretty text string of "Created: ...
> Modified: ... "
>
>
> Once I started using this I liked it so much I've converted most of my
> projects to it. Having a single method to return the create/mod info string
> is a delight. This field is also good for other types of meta data.
> Calculation dates are one I use. Could include things like last printed or
> whatever. Totally optional.
>
> Keep in mind trigger code always runs on the server regardless of where the
> record mod takes place. So client side IP vars are meaningless in a
> trigger. Current user is the fastest reliable way to know who the user is.
>
> Avoid trigger operations that do lookups or long verification procedures.
> Do that stuff prior to saving if you need it. Trigger code is best when
> it's lean and fast.
>
> On Tue, Nov 20, 2018 at 11:59 AM Robert ListMail via 4D_Tech <
> [email protected]> wrote:
>
>> At a minimum, I just have the simple need of recording “CreatedBy” and
>> “ModifiedBy” values (username or ID) for one particular table. I do have
>> extra fields already in that table that could be repurposed and I would
>> probably add “DateModified” to that. However, that’s three fields
>> used just
>> for auditing. When I look back at previous posts I see that some of you are
>> tracking (saving audit data for) for tables and even individual fields. So,
>> as I have a chance to redesign this DB, I wanted to re-think how this is
>> implemented.
>>
>>
>> So, Chip, when you have the need to store the username (or ID) of the user
>> that created and/or last modified a key record, do you ever have this data
>> in the field of the original record? I’m sure I have seen this more
>> commonly where the data is in the original record. I guess to keep things
>> normalized, you would use a related table (or a standalone table) where
>> each transaction that you want to remember is stored. However, with the
>> separate table method I suppose you would have to search this audit table
>> every time your detail form is loaded (assuming you want to show who
>> created or modified a record) and that each time the record is updated the
>> audit table would be getting a new record.
>>
>> Thoughts about your data audit strategy are appreciated.
>>
>> Thanks,
>>
>> Robert
>>
>> =======================
>> Robert Broussard
>> Houston, TX
>> =======================
>>
>>> On Aug 26, 2015, at 9:26 AM, Chip Scheide <[email protected]>
>> wrote, Re: Triggers and error handling:
>>>
>>> so my triggers tend to look like this:
>>> case of
>>> (Database event = : (Database event=On Saving New Record Event)
>>> trk_Last_Modified (->[Account_Postings]Created_Who)
>>> trk_Last_Modified (->[Account_Postings]Modified_Who)
>>
>> **********************************************************************
>> 4D Internet Users Group (4D iNUG)
>> Archive: http://lists.4d.com/archives.html
>> Options: https://lists.4d.com/mailman/options/4d_tech
>> Unsub: mailto:[email protected]
>> **********************************************************************
>
>
>
> --
> Kirk Brooks
> San Francisco, CA
> =======================
>
> *We go vote - they go home*
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> Archive: http://lists.4d.com/archives.html
> Options: https://lists.4d.com/mailman/options/4d_tech
> Unsub: mailto:[email protected]
> **********************************************************************
---------------
Gas is for washing parts
Alcohol is for drinkin'
Nitromethane is for racing
**********************************************************************
4D Internet Users Group (4D iNUG)
Archive: http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************