Postgres PL / Python初始化记录功能

时间:2018-06-14 16:42:08

标签: database postgresql stored-procedures triggers plpython

有没有办法传入PL函数,调用它来提供默认值以及如何使用它,其余的插入值?

CREATE TABLE tokensStore (
    id SERIAL PRIMARY KEY,
    users INTEGER REFERENCES users(id),
    genDate timestamp with time zone NOT NULL DEFAULT now(),
    expDate timestamp with time zone NOT NULL DEFAULT now() + interval '24 hours', 
    token char(30) NOT NULL DEFAULT tokenGenerator(%%%INSERTED VALUES%%%)   
);

而且我也不确定这是否是一种正确的方法,我不知道是否应该允许NULL值并生成一个生成令牌值的触发器。

问题是我不想在该列中允许空值。 而且我还希望使用返回值标记来生成类似

的插入
INSERT tokensStore(user) VALUES (1) RETURNING token; 

如果有人对此有很好的参考,我们将非常感激。

1 个答案:

答案 0 :(得分:0)

你需要一个plpython触发器:

contains

示例用法:

MATCH (sub:Subject), (p:Programme {name: 'Bsc. Agriculture' })
WHERE sub.name IN ['Physics (CAPE)', 'Biology (CAPE)', 'Chemistry (CAPE)']
WITH p, COLLECT(sub) AS subs
CREATE (p)-[:requires]->(c: Combo {amt:1})
FOREACH(s IN subs | CREATE (c)-[:contains]->(s))
RETURN *

当然,使用触发器,您不需要create or replace function before_insert_on_tokensstore() returns trigger language plpython3u as $$ id = TD["new"]["id"] users = TD["new"]["users"] TD["new"]["token"] = users * 100 + id # # TD["new"]["token"] = generate_token(users, id) # return "MODIFY" $$; create trigger before_insert_on_tokensstore before insert on tokensstore for each row execute procedure before_insert_on_tokensstore(); 的默认值。

了解PL/Python Trigger Functions.