From: | Glyn Astill <glynastill(at)yahoo(dot)co(dot)uk> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Table auditing / Pg/tcl help |
Date: | 2008-01-03 13:47:22 |
Message-ID: | 702134.75465.qm@web25801.mail.ukl.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
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(at)yahoo(dot)co(dot)uk> 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 | Content-Type | Size |
---|---|---|
Audit_multiple_pk.tcl | application/octet-stream | 2.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Bill Moran | 2008-01-03 14:20:31 | Re: [OT] Slony (initial) Replication - Slow |
Previous Message | Tomasz Ostrowski | 2008-01-03 13:38:00 | Re: basic questions: Postgres with yum on CentOS 5.1 |