我正在使用PostgreSQL 9.1。我的數(shù)據(jù)庫是結(jié)構(gòu)化的,因此有我的應(yīng)用程序使用的實(shí)際表。對于每個表,都有一個歷史表僅存儲更改歷史記錄。歷史表包含與實(shí)際表相同的字段,外加字段構(gòu)成一些額外的信息,例如。編輯時間。歷史記錄表僅由觸發(fā)器處理。我有兩種觸發(fā)器:Before INSERT 創(chuàng)建表時觸發(fā)向表中添加一些額外的信息(例如create_time)。Before UPDATE觸發(fā)器和before DELETE觸發(fā)器,以將舊值從實(shí)際表復(fù)制到歷史表。問題是我想使用觸發(fā)器來存儲進(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
添加回答
舉報
0/150
提交
取消