我有两个表,'PublishedBook'和'TextBook',它们专门用于“Items”实体。 'publishedBook'和'TextBook'覆盖'items'。也没有重叠。我认为,为了说明这一点,我需要做一些不可能的事情;
create table TextBook
(
itemNo char(5),
semester varchar(5),
section varchar(10),
pYear int,
constraint TextBookPK primary key(itemNo),
);
create table PublishedBook
(
itemNo char(5),
edition varchar(5),
constraint PublishebookPK primary key(itemNo)
);
create table Item
(
itemNo char(5) ,
title varchar(10),
description varchar(100),
constraint itemPK primary key(itemNo),
constraint itemFK foreign key(itemNo) references PublishedBook(itemNo)
constraint itemFK2 foreign key(itemNo) references TextBook(itemNo)
);
使Item表的'itemNo'引用PublishedBook和TextBook的两个主键。
任何人都可以解释一下我该如何解决这个问题?
答案 0 :(得分:0)
你正在做的是正确的,你只是在表Item的第二个约束之后缺少一个逗号:
create table TextBook
(
itemNo char(5),
semester varchar(5),
section varchar(10),
pYear int,
constraint TextBookPK primary key(itemNo),
);
create table PublishedBook
(
itemNo char(5),
edition varchar(5),
constraint PublishebookPK primary key(itemNo)
);
create table Item
(
itemNo char(5) ,
title varchar(10),
description varchar(100),
constraint itemPK primary key(itemNo),
constraint itemFK foreign key(itemNo) references PublishedBook(itemNo) ,
constraint itemFK2 foreign key(itemNo) references TextBook(itemNo)
);
答案 1 :(得分:0)
检查约束的查询结果是什么?:
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE constraint_name
in(
SELECT UNIQUE_CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE constraint_name in(
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE constraint_type='FOREIGN KEY'
AND TABLE_NAME='Item')
)