columns_key_values=', '+', '.join('''"{column_name}": ' || CAST(NEW.{column_name} AS text) || ''''.format(column_name=column_name)forcolumn_nameincolumns)ifcolumnselse'',
quoted_columns_key_values=', '+', '.join('''"{column_name}": "' || CAST(NEW.{column_name} AS text) || '"'''.format(column_name=column_name)forcolumn_nameinquoted_columns)ifquoted_columnselse'',
pc="}")
ifaction=='UPDATE':
begin_update_check='IF ROW(NEW.{what}) IS DISTINCT FROM ROW(OLD.{what}) THEN'.format(what='*'ifcolumn_nameisNoneorcolumn_name==id_column_nameelsecolumn_name)
begin_update_check='IF '
ifcolumnsorquoted_columns:
begin_update_check+=' OR '.join('ROW(NEW.{what}) IS DISTINCT FROM ROW(OLD.{what})'.format(what=column_name)forcolumn_namein((columnsor[])+(quoted_columnsor[])))
else:
begin_update_check+=' ROW(NEW.*) IS DISTINCT FROM ROW(OLD.*)'