我想为表帐户中创建的每一行创建一个序列,如os_1,os_2等...
如何获取此新行的ID并将其插入序列名称?
CREATE OR REPLACE FUNCTION public.create_os_seq() RETURNS TRIGGER AS $$
#variable_conflict use_variable
BEGIN
--CREATE SEQUENCE seqname;
EXECUTE format('CREATE SEQUENCE os_', NEW.id);
return NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER create_os_seq AFTER INSERT ON account FOR EACH ROW EXECUTE PROCEDURE create_os_seq();
表帐户
id INT AUTO_INCREMENT
nane VARCHAR
创建序列后,我会将其编号放在OS表中
表os
id INT
account_id INT
答案 0 :(得分:0)
根据您的问题,我假设您要处理自我增量值?Postgres使用shortcut SERIAL
代替AUTO_INCREMENT
,只需创建表格如下:
CREATE TABLE so79 (id bigserial primary key, col text);
这将自动为您创建序列,并将其值指定为列ID的默认值。基本上会让它像AUTO_INCREMENT
一样。您不必使用触发器来增加值...
答案 1 :(得分:0)
无法为每个行创建序列是个好主意。相反,请告诉我们您要做的事情。
我的猜测是你需要一个水线指示器,你打算在一些动作上增加一个高点。只需使用整数。
CREATE TABLE foo (
foo_id serial,
max_seen int
);
现在,您可以对其他表上的触发器执行任何操作,例如增加max_seen
。