Abh*_*jar 1 postgresql timestamp postgresql-9.1 timezone
有没有办法在插入查询时自动插入带区域的时间戳?(就像 id 自动递增,因为我不想在 sql 中传递参数作为时间,如果我们使用 zone,则每个地方都相同)。pg 9.1 版。以及如何使用所需的时间格式?
小智 6
其实,我想对你的问题发表评论。我不能这样做,因为我在这里的声誉很低。所以,我决定回答它是否符合你的问题。
让我开始吧。您要先确定“查询已插入”吗?
我对您的“查询已插入”有一个假设。“查询被插入”是每个查询被插入或影响到数据库(可能是插入、更新、删除等),将在日志中记录。登录在这里是指日志表,其中扳机柄每个查询。好的。我通过下面的例子给你明确的解释。
首先,像这样定义日志表,
CREATE TABLE query_log (
log_id SERIAL PRIMARY KEY,
log_timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
action VARCHAR(20) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
上面的操作列决定了查询是否由某人执行(例如,当有人插入时,操作列将是“插入”等)。然后,我们必须制作一个触发器来处理我们在log table上写的内容。这取决于受查询影响的表。例如,我们对表 query 进行查询。所以,
CREATE TRIGGER add_insert_query_log
AFTER INSERT ON name_of_table
FOR EACH ROW
EXECUTE PROCEDURE insert_query_log();
Run Code Online (Sandbox Code Playgroud)
和
CREATE OR REPLACE FUNCTION insert_query_log() RETURNS TRIGGER AS
$$
BEGIN
INSERT INTO query_log VALUES (currval(log_id)), DEFAULT, 'insert');
RETURN NEW;
END
$$ LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)
您可以继续使用另一个功能进行更新、删除等,也可以将所有这些功能组合在一个功能中。
归档时间: |
|
查看次数: |
11118 次 |
最近记录: |