如何使用postgresql触发器来设置UUID



我有一个名为students的表,它是从外部源填充的。数据以w/复合密钥的形式出现,然后我想使用它通过uuid_generate_v5生成UUID。我目前正在通过进行此操作

UPDATE students SET id = uuid_generate_v5(uuid_ns_url(), CONCAT(composite1, composite2));

每当一行被插入到这个表中时,我感兴趣的是将它移动到触发器中。我该怎么做?

类似未经测试的东西:

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();

但实际上,关于PL/PgSQL触发器和CREATE TRIGGER文档的手册应该会让你真正做到这一点。。。

最新更新