1

我有两个表,“PublishedBook”和“TextBook”,它们专门用于“Items”实体。“PublishedBook”和“TextBook”涵盖“项目”。也没有重叠。我认为为了说明这一点,我需要做一些不可能的事情;

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 的主键。

谁能解释一下我该怎么办?

4

2 回答 2

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')
)
于 2014-03-09T08:07:39.057 回答
0

您所做的是正确的,您只是在表项的第二个约束之后缺少一个逗号:

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)
);
于 2014-03-08T18:37:14.947 回答