我正在使用PostgreSQL 9.1。我的數(shù)據(jù)庫是結(jié)構(gòu)化的,因此有我的應(yīng)用程序使用的實(shí)際表。對(duì)于每個(gè)表,都有一個(gè)歷史表僅存儲(chǔ)更改歷史記錄。歷史表包含與實(shí)際表相同的字段,外加字段構(gòu)成一些額外的信息,例如。編輯時(shí)間。歷史記錄表僅由觸發(fā)器處理。我有兩種觸發(fā)器:Before INSERT 創(chuàng)建表時(shí)觸發(fā)向表中添加一些額外的信息(例如create_time)。Before UPDATE觸發(fā)器和before DELETE觸發(fā)器,以將舊值從實(shí)際表復(fù)制到歷史表。問題是我想使用觸發(fā)器來存儲(chǔ)進(jìn)行這些更改的用戶的ID。用id表示來自php應(yīng)用程序的id,而不是PostgreSQL用戶ID。有什么合理的方法嗎?使用INSERT和UPDATE,可以僅將ID的額外字段添加到實(shí)際表中,并將用戶ID作為SQL查詢的一部分傳遞給SQL。據(jù)我所知,這不適用于DELETE。所有觸發(fā)器的結(jié)構(gòu)如下:CREATE OR REPLACE FUNCTION before_delete_customer() RETURNS trigger AS $BODY$BEGIN INSERT INTO _customer ( edited_by, edit_time, field1, field2, ..., fieldN ) VALUES ( -1, // <- This should be user id. NOW(), OLD.field1, OLD.field2, ..., OLD.fieldN ); RETURN OLD;END; $BODY$LANGUAGE plpgsql
添加回答
舉報(bào)
0/150
提交
取消