मुझे लगता है कि customer
. के संदर्भ में टेबल और customer_id
आपके users
. की परिभाषा के साथ शुरू तालिका का अर्थ वास्तव में tenant
को संदर्भित करना है और tenant_id
।
किसी बिंदु पर आपको सही होने के लिए अपने कोड पर भरोसा करने की आवश्यकता है। यदि यह आपके लिए पर्याप्त नहीं है, और आपके पास बाधाएं होनी चाहिए, तो मैं यही करूंगा:
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)
);
नहीं तो आप tenant_id
. की नकल करते हुए फंस गए हैं user_roles
. में ।