PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक-से-सभी संबंधों की विदेशी कुंजी

मुझे लगता है कि 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 . में ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल 3.2.2 (या 3.2.1) + पोस्टग्रेस्क्ल 9.1.3 + उबंटू 11.10 कनेक्शन त्रुटि

  2. PostgreSQL:कॉलम द्वारा क्रम, विशिष्ट गैर-शून्य मान के साथ LAST

  3. PostgreSQL में महीने के हिसाब से ग्रुप कैसे करें

  4. PostgreSQL:चुनें कि 15 मिनट से कम पुराना कहां है

  5. Postgresql GROUP_CONCAT समकक्ष?