簡體   English   中英

如何在同一行發布中使用自動生成的主鍵

[英]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 )。 您可以創建一個新的插入規則,該規則將根據需要創建idrole

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM