![](/img/trans.png)
[英]How do I alter the position of a column in a PostgreSQL database table?
[英]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類型的錯誤- integer
和integer[]
我該怎么辦?
我實際上建議不要在這里使用數組。 而是使用聯結表來表示每個角色權限關系,如下所示:
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.