return'''"{column_name}": {quote_or_not}' || CASE WHEN {new_or_old}.{column_name} IS NULL THEN 'NULL' ELSE CAST({new_or_old}.{column_name} AS text) END || '{quote_or_not}'''.format(column_name=column_name,new_or_old=new_or_old,quote_or_not='"'ifquoteelse'')
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.*)'