Search Postgresql Archives

Re: UPDATE an updatable view

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>> So in the UPDATE statement, I only provided a value for last_user. But the
>> first test of the trigger function tests for a NULL value of
>> NEW.empname. Since
>> I did not provide one, I was expecting it to be NULL and an exception to
>> be thrown. Am I just misunderstanding how things work? Is there any way to
>> test to see if the UPDATE statement contained a reference to empname? If the
>> answer is no, I can certainly work with that, but before I go on I wanted
>> to make sure I wasn't missing anything.
>
>
> An UPDATE in Postgres is really a DELETE/INSERT where the OLD row is deleted and the NEW one inserted with the OLD values unless they where explicitly changed. So

Shoot, I went totally brain-dead on that one. I forgot that I'm actually doing
a DELETE/INSERT, and the behaviour makes perfect sense in that light. It's
called MVCC. Thanks for setting me straight!

> in your test  NEW.empname is still 'John Doe' and therefore NOT NULL. That test would only work if someone explicitly set empname = NULL in the update. If you want to check whether the value has not been changed then:
>
> IF NEW.empname = OLD.empname THEN

That's exactly the solution I hit on. Back to work, and thanks again.

>
>>
>> Thanks!
>
>
>
> --
> Adrian Klaver
> adrian.klaver@xxxxxxxxxxx


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux