假设我们有一个名为 example_table 的表,包含两列:id 和 value。我们想要在插入新行时自动设置一个时间戳。首先,创建表:
CREATE TABLE example_table (
id SERIAL PRIMARY KEY,
value VARCHAR(255),
created_at TIMESTAMP
);
接下来,我们将编写一个 PL/Perl 触发器来实现这个功能。触发器函数如下:
CREATE OR REPLACE FUNCTION set_created_at()
RETURNS TRIGGER AS $$
BEGIN
-- 在插入新行时设置时间戳
NEW.created_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plperl;
然后,我们创建一个 BEFORE INSERT 触发器,将触发器函数关联到 example_table 表上:
CREATE TRIGGER set_created_at_trigger
BEFORE INSERT ON example_table
FOR EACH ROW
EXECUTE FUNCTION set_created_at();
现在,当你插入新行时,created_at 列将自动被设置为当前时间戳:
INSERT INTO example_table (value) VALUES ('Some value');
请注意,这只是一个简单的示例。在实际应用中,你可能需要根据特定的需求定制触发器函数和触发器。确保考虑到性能和并发性等方面的问题,以及避免触发器中的无限循环。
转载请注明出处:http://www.zyzy.cn/article/detail/8533/PostgreSQL