2014-02-05 3 views
0

Есть ли способ установить подканал столбца составного типа в качестве внешнего ключа?Ограничение внешнего ключа в подклассе столбца составного типа в PostgreSQL

То, что я попытался это:

Create Type info_typ_ AS (
    category integer , 
    title text , 
    actor text , 
    price double precision); 

Create Table Products_typobj (
prod_id integer, 
info info_typ_, 
primary key(prod_id), 
Category references Categories(Category) 
); 

, но он не работает.

ответ

1

Эта работа для меня

Create Type info_typ_ AS (
    category integer , 
    title text , 
    actor text , 
    price double precision); 

Create Table Products_typobj (
prod_id integer, 
info info_typ_, 
primary key(prod_id) 
); 

Я удалил строку с references, поэтому использование type работ. SQL Fiddle DEMO

Если вам нужен внешний ключ, попробуйте ниже код:

Create Type info_typ_ AS (
    category integer , 
    title text , 
    actor text , 
    price double precision); 

Create Table Categories (
    Category int, 
    primary key(Category) 
); 

Create Table Products_typobj (
prod_id integer, 
info info_typ_, 
Category int references Categories(Category), 
primary key(prod_id), 
FOREIGN KEY (Category) REFERENCES Categories (Category) 
); 

SQL Fiddle DEMO

+0

'category' будет как в' 'info_typ' и categories'? – Shevliaskovic

+0

Категория в категории info_typ_ не нужна. – Parado

+0

Это на самом деле обход с альтернативным столом-дизайном. Ссылка на элемент составного типа во внешнем ключе * невозможна * AFAIC. –

Смежные вопросы