2017-01-06 9 views
0

私はPostgreSQLでDBを作成しています。少し助けが必要です。私はシステムモジュールに関するすべての情報を置く場所モジュールごとのユーザーの主キー? PostgreSQL

LDAPでユーザーコントロールの作業に、私はテーブルを持っているが

modulesと呼ばそれから私は、テーブルを作成し、私は、ユーザー名と整数の参照のことを置く場所user_moduleと呼ばれますこの表のモジュール(モジュール表内)は、行を追加/削除することができます。それにプライマリキーは必要ないと思いますか?

私のはpgAdmin IIIを使っていますし、それがa_horse_with_no_nameからの助けによって

テーブルコード

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

このuser_moduleテーブルの詳細を教えてください。 – CCH

+0

あなたの質問を編集し、テーブル用の 'create table'文を追加してください。 [**フォーマットテスト**](http://stackoverflow.com/help/formatting)、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why-may-i-not 285557#285557)、一般にプライマリキーのないテーブルは疑わしいと思われる –

+0

@a_horse_with_no_name完了 – JuJoGuAl

答えて

0

を「私は私が編集するためのプライマリを作成する必要がある、このテーブル内のデータを見ることができます」と述べました。

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; 

私はユニーク制約をプライマリに変更します。

+1

私は、接頭辞 'fk_'が一意またはPrimaryKey制約の名前についてかなり混乱していると言わなければなりません。 –

+0

@a_horse_with_no_nameあなたは思いますか?あなたは何を使いますか? – JuJoGuAl

+0

@a_horse_with_no_name私はすべての制約のプレフィックスを作成し、その名前に関数(一意、一次、チェック、外来のキー)を指定しようとしています – JuJoGuAl