簡體   English   中英

postgresql 觸發器或用戶創建存儲功能

[英]postgresql trigger or functions for user creation storation

我無法在 postgresql 中找到用戶創建、密碼更改、用戶 ID 更新或上次登錄詳細信息,同樣我想創建觸發器或函數,以便它將存儲數據庫用戶創建時間和數據庫用戶何時登錄,以及密碼更新時間。 我想在數據庫級別而不是在表級別實現這一點。

我在下面使用 function:

CREATE FUNCTION public.trigger_update_created_and_modified_date()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$

BEGIN
IF (TG_OP = 'INSERT') THEN
EXECUTE format(E'update "%s" set date_created = \'%s\', date_modified = \'%s\'
WHERE id = %s', TG_TABLE_NAME,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,NEW.id);
ELSEIF (TG_OP = 'UPDATE') THEN
EXECUTE format(E'update "%s" set date_modified = \'%s\'
WHERE id = %s', TG_TABLE_NAME,CURRENT_TIMESTAMP,NEW.id);
END IF;
RETURN NEW;
END

$BODY$;

還有其他方法嗎?

DML 觸發器僅在INSERTUPDATEDELETE語句上觸發,因此它們不能被使用。

但是有些事件觸發器會CREATEALTERDROP語句上觸發。 對您來說不幸的是, 事件觸發器觸發矩陣顯示您不能在CREATE/ALTER/DROP ROLE上擁有事件觸發器,因此無法獲得您想要的。

你能得到的,我建議你做的,是使用日志文件。

log_statement = 'ddl'
log_connections = on

您將記錄這些事件。

如果您想以自動方式解析和消化這些日志文件,可以使用csvlog格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM