簡體   English   中英

我如何在一列是Postgresql數據庫的ID數組?

[英]How do I make an array of ids in one column is Postgresql database?

我在postgres表中有權限表

CREATE TABLE public.permissions
(
permission_id integer NOT NULL,
crud_signature text COLLATE pg_catalog."default" NOT NULL,
object_id uuid NOT NULL,
object_type text COLLATE pg_catalog."default" NOT NULL,
include_subcategories boolean NOT NULL,
CONSTRAINT permissions_pkey PRIMARY KEY (permission_id)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.permissions
OWNER to postgres;

並有ROLES表。 每個角色都有多個權限。

CREATE TABLE public.roles
(
role_id integer NOT NULL,
role_name text COLLATE pg_catalog."default" NOT NULL,
role_description text COLLATE pg_catalog."default",
permissions integer[],
CONSTRAINT roles_pkey PRIMARY KEY (role_id)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.roles所有者到postgres;

當我嘗試做一個外鍵列樣permissions類型的integer[] Posgres給我,theese領域具有incompartables類型的錯誤- integerinteger[]

我該怎么辦?

我實際上建議不要在這里使用數組。 而是使用聯結表來表示每個角色權限關系,如下所示:

CREATE TABLE roles_permissions (
    role_id integer NOT NULL,
    permission_id integer NOT NULL,
    CONSTRAINT rp_pkey PRIMARY KEY (role_id, permission_id)
);

然后,通過刪除權限數組來修改當前roles表。 您當前的方法使用非規范化數據,因為您正試圖在數組中為每個單獨的角色存儲一組權限。

暫無
暫無

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

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