As Lucas suggested, you can implement a “Push” style system that, whenever an entity is changed, is “pushed” to other connected users. It can be a little tricky. Working with an outdated system, we deal with this, this is the “Change Number” column, but in fact it can be everything that is updated every time a record changes.
When the user tries to change the object, we query the database to lock the row of this object, where "Change number" reflects the "Change number" that the user currently has.
If the lock is successful, the user can update / delete the object. When they are executed, they “Save / fix” and “Change number” on the object will be increased.
If they can’t get the row lock and the “Change number” is the same, we will show the message that the requested object is being used by another user. If the “Change Number” was different, then the message tells them that they need to update their presentation.
source share