>>> In particular, columns are populated with values if they are not specified >>> in the update statement which is used. >>> Usually with an expression like this: >>> >>> IF NOT UPDATING('IS_CANCELED') >>> THEN >>> :new.is_canceled := ...; >>> END IF; >>> >>> I have not found anything similar in PostgreSQL. What is the common >>> approach to this problem? >> >> PostgreSQL doesn't have an exact equivalent. Typically, the OLD and NEW >> values are compared and then action is taken based on that. For example, in >> PL/pgSQL: >> >> IF NEW.is_canceled IS NOT DISTINCT FROM OLD.is_canceled THEN >> NEW.is_canceled := etc etc ; >> ENDIF; > > Unfortunately, this doesn't quite fit the logic I need. I don't need to know > if the value was changed, but if the application that sent the UPDATE > statement knows the column or not. > In our case, a number of different applications access the database, which > may or may not know the column depending on the version. > And it is also regularly the case that SQL statements are executed directly > in an SQL client by hand. And in the event that the column was not specified > in these statements, a trigger is supposed to fill the value. > >> There's currently no way to detect if the column was simply not mentioned at >> all in the UPDATE statement. > > Hmm, that's odd.
See thread below: https://www.postgresql.org/message-id/VisenaEmail.26.7cbf2947c8d23ceb.1769a2755ff%40tc7-visena I found that thread already, but It doesn't not provide a solution to my problem. -- Dirk Mika Software Developer mika:timing GmbH Strundepark - Kürtener Str. 11b 51465 Bergisch Gladbach Germany fon +49 2202 2401-1197 dirk.m...@mikatiming.de www.mikatiming.de AG Köln HRB 47509 * WEEE-Reg.-Nr. DE 90029884 Geschäftsführer: Harald Mika, Jörg Mika