![](/img/trans.png)
[英]How to get auto-generated row primary key via Ruby PostgreSQL gem?
[英]How to use the auto-generated primary key in the same row postrges
我正在嘗試使用以下架構在表中插入一條語句
CREATE TABLE auth(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
role VARCHAR(64)
);
我正在使用pgcrypto擴展來生成uuid。 在此表中插入一行時,是否可以將id附加到角色字段?
我正在使用此表插入
insert into auth (role) values ('admin');
我想將生成的ID附加到admin,以便該角色看起來像admin_12234-3453-3453-345-34534。
您需要一個插入觸發器來執行此操作:
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();
我認為沒有直接的方法可以實現這一目標。 但是postgres允許在表和視圖上定義規則(請參閱https://www.postgresql.org/docs/9.2/static/sql-createrule.html )。 您可以創建一個新的插入規則,該規則將根據需要創建id
和role
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.