如何使用postgresql触发器设置UUID

Kyl*_*cot 0 database postgresql uuid triggers

我有一个名为的表students从外部源填充.数据带有复合键,然后我想用它来生成UUID uuid_generate_v5.我现在正在这样做

UPDATE students SET id = uuid_generate_v5(uuid_ns_url(), CONCAT(composite1, composite2));
Run Code Online (Sandbox Code Playgroud)

当有一行插入此表时,我有兴趣将其移动到触发器中.我该怎么做呢?

Cra*_*ger 7

像未经测试的东西:

CREATE OR REPLACE FUNCTION my_trigger() 
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
   NEW.uuid_col := uuid_generate_v5(uuid_ns_url(), CONCAT(NEW.composite1, NEW.composite2));
   RETURN NEW;
END;
$$;

CREATE TRIGGER mytable_my_trigger
BEFORE INSERT ON mytable
FOR EACH ROW EXECUTE PROCEDURE my_trigger();
Run Code Online (Sandbox Code Playgroud)

但实际上,在PL/pgSQL的手动触发,并CREATE TRIGGER文档应该真正让你有...