我正在尝试使用以下架构在表中创建一个insert语句
CREATE TABLE auth(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
role VARCHAR(64)
);
我正在使用pgcrypto扩展来生成uuids。在此表中插入行时是否可以将id附加到角色字段?
我使用
插入此表insert into auth (role) values ('admin');
我想将生成的id附加到管理员,以便该角色看起来像admin_12234-3453-3453-345-34534。
答案 0 :(得分:1)
您需要插入触发器来执行此操作:
CREATE FUNCTION admin_uuid() RETURNS trigger AS $$
BEGIN
NEW.role := NEW.role || NEW.id::text;
RETURN NEW;
END;
$$ LANGUAGE plpgsql STABLE;
CREATE TRIGGER set_admin_uuid
BEFORE INSERT ON auth
FOR EACH ROW EXECUTE PROCEDURE admin_uuid();
答案 1 :(得分:0)
我认为没有直接的方法来实现这一目标。但是postgres允许在表和视图上定义规则(参见https://www.postgresql.org/docs/9.2/static/sql-createrule.html)。您可以为插入创建新规则,根据需要创建id
和role
。