【发布时间】:2019-02-01 15:58:33
【问题描述】:
我想在我的数据库中创建这两个表:
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,第 16 级,状态 1,第 11 行
无法创建约束或索引。查看以前的错误。
我该如何处理这些错误?
【问题讨论】:
-
尝试先创建“国家”表,然后再创建其他表P
-
只是为了扩展@ErayBalkanli 的评论,以防您不明白为什么;无法创建外键,因为在创建
P时外键的目标表不存在。 -
@ErayBalkanli 您应该稍微扩展一下以解释原因并将其发布为答案。
-
我收到表中已有对象名称“C”的错误
-
这对您发布的代码毫无意义。你有一个错字。
标签: sql sql-server