Search Postgresql Archives

Re: Table auditing / Pg/tcl help

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

 



Hi people,

Are any of you lot handy with pgtcl then? Or should I be posting on
another list, the only other list I could possible see was
pgsql-hackers?

I managed to modify the tcl script at the address I posted below to
save the field I wanted it to. However I've still not managed to get
it to save the names and values of all my primary keys. All I've
managed to do is create a script that does nothing.

I've attached it, could someone help?

Thanks
Glyn


--- Glyn Astill <glynastill@xxxxxxxxxxx> wrote:

> Hi people,
> 
> I've been trying to set up table auditing using a tcl function and
> a
> trigger. I followed the guide here to start with:
> 
> http://www.alberton.info/postgresql_table_audit.html
> 
> The thing is we have multiple fields in our primary keys so I need
> to
> change it to handle them all. I was thinking for now to just set
> pk_name like "fieldName1,field2Name" and pk_value to
> "fieldvalue1,fieldvalue2" etc.
> 
> The script runs the query:
> 
> "SELECT a.attname AS pk_name FROM pg_class c, pg_attribute a,
> pg_index i WHERE c.relname = '$tgname' AND c.oid=i.indrelid AND
> a.attnum > 0 AND a.attrelid = i.indexrelid AND i.indisprimary='t'"
> 
> which should produce a list of the values. It then does:
> 
> 	  #get PK value
> 	  foreach field $TG_relatts {
> 	    if {[string equal -nocase [lindex [array get NEW $field] 0]
> $pk_name]} {
> 	      set pk_value [lindex [array get NEW $field] 1]
> 	      break;
> 	    }
> 	  }
> 
> Which I presume just gets the first value, then breaks. I want to
> get
> them all and put them into a comma separated string. So (baering in
> mind I've not touched tcl before) I changed this to:
> 
> 	  #get PK value
> 	  foreach field $TG_relatts {
> 	    if {[string equal -nocase [lindex [array get NEW $field] 0]
> $pk_name]} {
> 	      if {[string length $pk_value] > 0} {
> 		append pk_value "," [lindex [array get NEW $field] 1]
> 		append pk_list "," $pk_name
>               } else {
> 		set pk_value [lindex [array get NEW $field] 1]
> 		set pk_list $pk_name
>               }
> 	      #break;
> 	    }
> 	  }
> 
> But it didn't work, so I guess I'm missing something.
> 
> 
> 
> 
> 
> 
> 
> 
>       ___________________________________________________________
> Support the World Aids Awareness campaign this month with Yahoo!
> For Good http://uk.promotions.yahoo.com/forgood/
> 
> 
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: explain analyze is your friend
> 



      ___________________________________________________________
Support the World Aids Awareness campaign this month with Yahoo! For Good http://uk.promotions.yahoo.com/forgood/

Attachment: Audit_multiple_pk.tcl
Description: 3518590780-Audit_multiple_pk.tcl

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

[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