Jag antar att referenser till customer
tabell och customer_id
börjar med definitionen av dina users
Tabell betyder egentligen att hänvisa till tenant
och tenant_id
.
Vid något tillfälle måste du lita på att din kod är korrekt. Om det inte är tillräckligt bra för dig och du måste ha begränsningar, så är det här jag skulle göra:
create or replace function user_role_check(_user_id uuid, _role_id uuid)
returns boolean as $$
select count(*) = 1
from roles r
join users u
on u.tenant_id = r.tenant_id
where u.id = _user_id
and r.id = _role_id;
$$ language sql;
create table user_roles (
id uuid not null primary key,
user_id uuid references users(id),
role_id uuid references roles(id),
check (user_role_check(user_id, role_id)),
unique (user_id, role_id)
);
Annars har du fastnat för att duplicera tenant_id
till user_roles
.