我创建了两种类型:
Create Type info_typ_1 AS ( Prod_id integer, category integer); Create Type movie_typ AS( title varchar(50), actor varchar(50), price float);
我想创建一个包含这两种类型的表。我知道对于由一种类型组成的表,它是:
CREATE TABLE Table1 of type1 ( primary key(prod_id) );
对于我上面创建的两种类型,有什么方法可以做到这一点?
我尝试做的(错误的)是创建包含前两个的第三种类型:
Create Type info_ AS ( info info_typ_1, movie movie_typ);
然后创建表:
CREATE TABLE table1 of info_ ( primary key(Prod_id) );
但这是行不通的。我收到此错误:
ERROR: column "prod_id" named in key does not exist LINE 3: primary key(Prod_id) ^ ********** Error ********** ERROR: column "prod_id" named in key does not exist SQL state: 42703 Character: 43
您不能成为prod_id的主键,table1因为唯一的列是两种复合类型info和movie。您不能在PRIMARY KEY子句中访问这些复合类型的基本类型。
prod_id
table1
info
movie
PRIMARY KEY
您尝试执行的操作在info或上有pk约束movie。 除此以外,可能不是您要找的东西,这种方式是不可能的。
你可以实现的东西 像 这样用…
在这里,您可以继承多个父表(替代您的类型)。例子:
CREATE TABLE info ( prod_id integer ,category integer ); CREATE TABLE movie ( title text ,actor text ,price float ); CREATE TABLE movie_info ( PRIMARY KEY(prod_id) -- now we can use the base column! ) INHERITS (info, movie); INSERT INTO movie_info (prod_id, category, title, actor, price) VALUES (1, 2, 'who donnit?', 'James Dean', '15.90'); SELECT * FROM movie_info;