我想在数据库中创建这两个表:
CREATE TABLE Person
(
PID INT NOT NULL,
CID INT NOT NULL,
FName VARCHAR(35) NOT NULL,
LName VARCHAR(35) NOT NULL,
Gender CHAR(1) NOT NULL,
DOB DATE NOT NULL
);
ALTER TABLE Person
ADD CONSTRAINT PK_Person PRIMARY KEY (PID);
ALTER TABLE Person
ADD CONSTRAINT FK_Country FOREIGN KEY (CID) REFERENCES Country(CID);
ALTER TABLE Person
ADD CONSTRAINT CHK_NOTEMPTYNAME CHECK ( Fname <> '' AND LName <> '' );
ALTER TABLE Person
ADD CONSTRAINT CHK_GENDER CHECK (Gender in ('M', 'F','O'));
CREATE TABLE Country
(
CID INT NOT NULL,
CName VARCHAR(56),
);
ALTER TABLE Country
ADD CONSTRAINT PK_Country PRIMARY KEY (CID);
ALTER TABLE Country
ADD CONSTRAINT CHK_NOTEMPTYCOYNTRY CHECK (CName <> '');
在实现这两个表时,出现两个错误:
信息1767,级别16,状态0,第11行
外键“ FK_Country”引用无效的表“ Country”。1750级第1州第11行的消息1
无法创建约束或索引。查看以前的错误。
如何处理这些错误?
答案 0 :(得分:0)
必须首先创建表Country
,因为它是您的主表,包括主键,该主键将用作其他表的外键。
首先,请确保尚未创建表,如果没有,请首先删除,如果表未包含任何数据。您可以“刷新”表部分并检查表是否在那里。或者您可以简单地做到:
IF OBJECT_ID('tablename', 'U') IS NOT NULL
DROP TABLE tablename;
在确保要创建的表不存在之后,创建该表,该表应包含将在以后另一个表中用作外键的键,以提供第一关系。您的问题是COUNTRY
。
Create table Country (...) ...
在确定使用主键约束创建了Country表之后,您可以创建其他表P
并通过将其主键用作外键使其与Country表相关。