Bạn không thể tạo prod_id
khóa chính của table1
bởi vì các cột duy nhất là hai loại kết hợp info
và movie
. Bạn không thể truy cập các loại cơ sở của các loại kết hợp này trong PRIMARY KEY
mệnh đề.
Những gì bạn đang cố gắng thực hiện hoạt động với một ràng buộc pk về info
hoặc movie
.
Ngoại trừ, nó có thể không phải là thứ bạn đang tìm kiếm, điều này không thể thực hiện được theo cách này.
Bạn có thể triển khai một cái gì đó như cái này với ...
Kế thừa
Ở đây bạn có thể kế thừa từ nhiều bảng cha (thay thế cho các kiểu của bạn). Ví dụ:
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;
-> SQLfiddle thể hiện cả hai.
Hãy nhớ đọc về các giới hạn của kế thừa trong sách hướng dẫn.