-- ----------------------- -- - Functions for ACMIS - -- ----------------------- -- -- log_insert() -- -- Inserts a record in the ChangeLog table for an INSERT -- DROP FUNCTION log_insert(varchar); CREATE FUNCTION log_insert(varchar) RETURNS OPAQUE AS ' set log_entry "" foreach colname [array names TG_relatts] { set logentry "$logentry::$colname:$NEW($colname)" } set query "INSERT INTO changelog (changelogtable, changelogdesc, changeloguser, changelogaction) VALUES ([quote $1], [quote $logentry], [quote $NEW(lastuser)], [quote \"INSERT\"])" spi_exec $query elog NOTICE "*** log_insert: ''$query''" return NEW ' language 'pltcl'; -- -- log_delete() -- -- Inserts a record in the ChangeLog table for an DELETE, -- _AND_ deletes the record from tablename. -- DROP FUNCTION log_delete(varchar, int, varchar); CREATE FUNCTION log_delete(varchar, int, varchar) RETURNS OPAQUE AS ' set log_entry "" set query "" set query "DELETE from $1 where $2 = $OLD($2)" spi_exec $query elog NOTICE "*** log_delete: $query" set query "" foreach colname [array names TG_relatts] { set logentry "$logentry::$colname:$OLD($colname)" } set query "INSERT INTO changelog (changelogtable, changelogdesc, changeloguser, changelogaction) VALUES ([quote $1], [quote $logentry], [quote $3], [quote \"DELETE\"])" spi_exec $query elog NOTICE "*** log_delete: $query" return OLD ' language 'pltcl'; -- -- log_update() -- -- Inserts a record in the ChangeLog table for an UPDATE -- DROP FUNCTION log_update(varchar); CREATE FUNCTION log_update(varchar) RETURNS OPAQUE AS ' set log_entry "" foreach colname [array names TG_relatts] { #if {!string equal $OLD($colname) $NEW($colname)} { if {$OLD($colname) != $NEW($colname) { set logentry "$logentry::$colname:$NEW($colname)" } } set query "INSERT INTO changelog (changelogtable, changelogdesc, changeloguser, changelogaction) VALUES ([quote $1], [quote $logentry], [quote $NEW(lastuser)], [quote \"INSERT\"])" spi_exec $query elog NOTICE "*** log_insert: $query" return NEW ' language 'pltcl';