Pgadmin
3個表之間的外鍵問題。(PgAdminIII)
我正在為 PostgreSQL 使用 pgAdmin III,但 3 個表之間的外鍵存在問題。我的桌子是:
帶有主鍵 IDnegozio (整數類型,無需設為串列類型) 的區域設置 Orario帶有主鍵 IDorario(整數類型,無需設為串列類型) OrarioToLocale具有兩列:IDlocaleT和IDorarioT(均為整數)。
我正在嘗試在 IDlocale -> IDlocaleT 和 IDorario -> IDorarioT 之間創建一個外鍵,所以我可以建立一個 Shop 可以有多個時間的關係。問題是,當我嘗試創建這些外鍵時,我發生了一個錯誤:“沒有為引用表提供唯一約束匹配的鍵”,我不明白為什麼。我試圖Google但我沒有找到任何答案!我能怎麼做?
這是三個表的程式碼:
CREATE TABLE public."Locale" ( "IDnegozio" integer NOT NULL DEFAULT nextval('"Locale_IDnegozio_seq"'::regclass), CONSTRAINT "Locale_pkey" PRIMARY KEY ("IDnegozio"), ) CREATE TABLE public."Orario" ( "IDorario" integer NOT NULL DEFAULT nextval('"Orario_IDorario_seq"'::regclass), CONSTRAINT "Orario_pkey" PRIMARY KEY ("IDorario") ) CREATE TABLE public."OrarioToLocale" ( "IDlocaleT" integer NOT NULL, "IDorarioT" integer NOT NULL )
我能怎麼做?謝謝指教!
您可以將其直接放入
CREATE TABLE
語句中,這可能比您擁有的更容易和更短。CREATE TABLE public.Locale ( IDnegozio serial PRIMARY KEY ); CREATE TABLE public.Orario ( IDorario serial PRIMARY KEY ); CREATE TABLE public.OrarioToLocale ( IDlocaleT integer NOT NULL REFERENCES Locale, IDorarioT integer NOT NULL REFERENCES Orario, PRIMARY KEY ( IDlocaleT, IDorarioT ) )
我用複合初級製作了 OrarioToLocale,但是,
- 你可以決定你不想要那個。
- 如果您確實想要這樣,那麼 IDlocaleT 和 IDorarioT 就
NOT NULL
意味著即使這樣也不需要明確。