我有一个名为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
文档的手册应该会让你真正做到这一点。。。