"Last Modified" field not time-stamping updates from Linked Table or Lookup

First, thank you for creating such an incredible tool and as I am trying to grasp its potential and slowly learning, sure some questions will come-up.
I was experimenting with “Last Modified” field and it time-stamps as intended any changes for the row if they are made in that particular table. Unfortunately any changes that appear in that table/row from another linked table or “Lookup” field are not time-stamped as modified.
Is that intended functionality or some sort of bug.
Thank you in advance for chiming in.


Please fill in the questionnaire below.

Help Questionnaire

Self-Hosted Installation and Setup Questions

Delete this section if you are using Baserow.io.

How have you self-hosted Baserow.

Docker Desktop on Win10

What are the specs of the service or server you are using to host Baserow.

Which version of Baserow are you using.

How have you configured your self-hosted installation?

What commands if any did you use to start your Baserow server?

Describe the problem

Describe, step by step, how to reproduce the error or problem you are encountering.

Provide screenshots or include share links showing:

How many rows in total do you have in your Baserow tables?

Please attach full logs from all of Baserow’s services

Hi @stryker, welcome to the community.

The “Last modified” field only updates when a change has been made to the record of the table itself. Linked records only contain a link - trough their unique id - to the table and will not affect the “Last modified” field if you make changes to the linked record.

So, this is intended functionality.

If you need to have the last modification of a record and the linked fields, you can work with lookup fields:

  • At a “Last modified” field to table A (for example: Employees)
  • At a “Last modified” field to table B (for example: Departments)
  • Create a linked field in table A that refers to table B
  • Add a lookup field in table A that shows the "Last modified " field of table B
  • Create a new formula field in Table A that checks the most recent date of both Last Modified fields

Thank you for the explanation. That sounds like a good workaround for the main table to timestamp latest updates coming from various linked tables and lookups.

I need help with the formula that would display latest date from several fields (as per your example). I am using in formula syntax argument MAX but it is not working. Here is the syntax using fields from your example:
max(field(‘Last modified on A’) , field(‘Last modified lookup from B’))
Can you please help with the formula I can use to display the latest date out of two (even when one of the fields is empty?
Thanks in advance.

Hi,

the max() function expects a list of lookup values from the same table. It cannot be used to return the highest value of two arguments.

The formula you need is

if(date_diff('ss',field('Last modified (Employee)'),field('Last modified (Department)')) < 0,field('Last modified (Employee)'),field('Last modified (Department)'))

where the field

  • Last modified (Employee) is a field in your Employee table of the type Last modified
  • Last modified (Department) is a lookup field from the Departments table.

The formula uses the following functions:

  • date_diff(): to calculate the difference between both dates and return the result in seconds
  • if(): to check if the difference between the last modified date of the Employee table is smaller than the Departments table.

if the result is true, show the last modified of the Employee table, otherwise of the Departments table

If “lookup field from the Departments table” is blank - the resulting field is blank. It only populates when there is a date in the “Departments” table.
I understand it suppose to show “Employee” date unless there is a newer date in “Departments” field.
Just to make sure here is the formula:
if(date_diff(‘ss’,field(‘Employee’),field(‘Department’)) < 0,field(‘Employee’),field(‘Department’))

If “lookup field from the Departments table” is blank - the resulting field is blank. It only populates when there is a date in the “Departments” table.

Yes, but if the type of the field in the Departments table is Last modified, it can never be blank since this field is set automatically when a new row is created and updated is the row has changed.

I understand it suppose to show “Employee” date unless there is a newer date in “Departments” field.

Correct

Correct only if 100% Employee records have 100% updated “Department” records via Lookup (we used Employee and Department for simplification). In real life data from Lookup can affect only fraction of “Employee” records, leaving the rest blank, as in the example in attached image.

Back to my original question: Can the formula you provided be modified to reflect in the field “Record Date” the later out of two dates (“Entered” and “Security Intake Form” as per example in the pic). Also when “Security Intake Form” field is empty to display “Entered” date.
Thanks.

Hi,

The formula gets a lot more complicated if there are blank fields, but I think I found a workaround. I will continue with the Employee and Departments example:

Step 1:
Instead of using a regular lookup field in the Employee table, change it to a formula field using the following formula:

min(lookup('Department','Last modified'))

This gets the last modified date from the Departments table. The min() function is a woraround to convert it from a list of dates into a single date. The reason why you normally have a list of dates is because - in theory - you can link multiple departments to an employee. Each of those departments would have their own last modified dates.

Step 2
Change the formula field and check if there is a department. If not, the date of the employee will always be the most recent date.

if(count(field('Department')) = 0,field('Last modified (Employee)'),
if(date_diff('ss',field('Last modified (Employee)'),field('Last modified (Department)')) < 0,field('Last modified (Employee)'),field('Last modified (Department)')))

This workaround works perfect.
Thanks frederikdc