On 8/15/23 08:04, Russell Rose | Passfield Data Systems wrote:
> Hi there
>
> I am trying to convert a SQL Anywhere database to postgres. Within SQL
> anywhere a field can have a default value of ‘last user’. This means
> that when you perform an update on a table, if the field is not
> explicitly set then the current user is used. So for instance if I have
> a field called mod_user in a table, but when I do an update on the table
> and do not set mod_user then SQL Anywhere sets the field to current_uer.
> I have tried to replicate this using a postgres trigger in the before
> update. However, if I do not set the value then it automatically picks
> up the value that was already in the field. Is there a way to tell the
> difference between me setting the value to the same as the previous
> value and postgres automatically picking it up.
Not that I know of. In Postgres an UPDATE is essentially a DELETE of the
OLD tuple and an INSERT of a new tuple. You cannot determine whether the
same value in a given field for the OLD/NEW records was explicitly set
the same or just carried over.
>
> If the field myfield contains the word ‘me’. Can I tell the difference
> between:
>
> Update table1 set field1=’something’,myfield=’me’
>
> And
>
> Update table1 set field1=’something’
>
--
Adrian Klaver
adrian.klaver@aklaver.com