2017-01-06 5 views
0

Ich mache eine DB in PostgreSQL und ich brauche ein wenig Hilfe.Primärschlüssel für Benutzer pro Modul? PostgreSQL

Die Benutzerkontrolle Arbeit mit LDAP, und ich habe eine Tabelle modules genannt, wo ich alle Informationen über die Systemmodule setzen,

Dann habe ich eine Tabelle user_module genannt, wo ich den Benutzernamen und die ganze Zahl setzen, dass Verweise ein Modul (in der Modulentabelle), in dieser Tabelle können Sie Zeilen hinzufügen/löschen und ich denke, ich brauche keinen Primärschlüssel dafür, oder nicht?

Ich verwende PgAdmin III und es wird gesagt: „Ich kann nur Daten anzeigen in dieser Tabelle, ich brauche einen Primary erstellen für die Bearbeitung von“

Tabellencode

CREATE TABLE public.adm_mod_usu 
(
    cusuario text NOT NULL, 
    cmodulo_det integer NOT NULL, 
    CONSTRAINT fk_adm_mod_usu_cmodulo_det FOREIGN KEY (cmodulo_det) 
     REFERENCES public.adm_mod_det (cmodulo_det) MATCH SIMPLE 
     ON UPDATE RESTRICT ON DELETE RESTRICT, 
    CONSTRAINT fk_adm_mod_usu_unique_cpermiso UNIQUE (cusuario, cpermiso) 
    USING INDEX TABLESPACE sistema_index 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE public.adm_mod_usu 
    OWNER TO postgres; 
GRANT ALL ON TABLE public.adm_mod_usu TO public; 
GRANT ALL ON TABLE public.adm_mod_usu TO postgres; 
+0

Können Sie weitere Details zu dieser Tabelle user_module angeben? – CCH

+0

Bitte bearbeiten Sie Ihre Frage und fügen Sie die 'create table' Anweisungen für die Tabellen hinzu. [** Formatierter Test **] (http://stackoverflow.com/help/formatting) bitte, [keine Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-auf-so-wenn-eine-Frage-Frage/285557 # 285557) aber im Allgemeinen scheint eine Tabelle ohne Primärschlüssel zweifelhaft –

+0

@a_horse_with_no_name Fertig – JuJoGuAl

Antwort

0

Mit Hilfe von a_horse_with_no_name:

ALTER TABLE public.adm_mod_usu DROP CONSTRAINT fk_adm_mod_usu_unique_cpermiso; 
ALTER TABLE public.adm_mod_usu 
    ADD CONSTRAINT fk_adm_mod_usu PRIMARY KEY (cusuario, cpermiso) 
USING INDEX TABLESPACE sistema_index; 

Ich ändern die eindeutige Einschränkung zu primären.

+1

Ich muss sagen, ich finde das Präfix 'fk_' ziemlich verwirrend für den Namen einer eindeutigen oder PrimaryKey-Einschränkung. –

+0

@a_horse_with_no_name Denkst du? Welchen Verkleinerungsfaktor würdest du benutzen? – JuJoGuAl

+0

@a_horse_with_no_name Ich versuche ein Präfix für alle Constraints zu erstellen und im Namen die Funktion anzugeben (unique, primary, check, Fremdschlüssel) – JuJoGuAl

Verwandte Themen