尝试执行关系时出现SQL查询问题
我正在数据库中创建表,在尝试创建表之间的关系时,我的查询出现了一个奇怪的问题 我的问题是:尝试执行关系时出现SQL查询问题,sql,sql-server,isqlquery,Sql,Sql Server,Isqlquery,我正在数据库中创建表,在尝试创建表之间的关系时,我的查询出现了一个奇怪的问题 我的问题是: CREATE TABLE ogrnizationarticle ( OAID Int NOT NULL , _Text VARCHAR(255) NOT NULL , ARank Int NULL DEFAULT NULL , Acomment VARCHAR(255) NULL DEFAULT NULL , Author VARCHAR(45) NULL DEFAULT NULL
CREATE TABLE ogrnizationarticle (
OAID Int NOT NULL ,
_Text VARCHAR(255) NOT NULL ,
ARank Int NULL DEFAULT NULL ,
Acomment VARCHAR(255) NULL DEFAULT NULL ,
Author VARCHAR(45) NULL DEFAULT NULL ,
PRIMARY KEY (OAID, _Text) ,
foreign key (OAID) references organization(OID),
);
-- -----------------------------------------------------
-- Table nasshope.organization_Article_comment
-- -----------------------------------------------------
CREATE TABLE organizationArticleComment (
O_Article_ID Int NOT NULL ,
Comment VARCHAR(255) NOT NULL ,
Article VARCHAR(255) NOT NULL ,
Comment_Like Int NULL DEFAULT NULL ,
_Date DATETIME NULL DEFAULT NULL ,
PRIMARY KEY (O_Article_ID, Comment, Article) ,
foreign key (O_Article_ID) references ogrnizationarticle(OAID),
);
这里是错误
Msg 1776, Level 16, State 0, Line 13
There are no primary or candidate keys in the referenced table 'ogrnizationarticle' that match the referencing column list in the foreign key 'FK__organizat__O_Art__42ACE4D4'.
Msg 1750, Level 16, State 0, Line 13
Could not create constraint. See previous errors.
为此,您需要将
\u Text
列添加到organizationArticleComment
并使用
外键(O_-Article\u-ID,\u-Text)引用组织(OAID,\u-Text)
但是我不建议你那样做
OAID,\u Text
在我看来不是ogrnizationarticle
的好主键。我会在那里使用代理PK(IDENTITY
),然后您只需要将其包含在organizationArticleComment
中
否则,您将需要跨表复制一个可能非常宽且不稳定的键。由于PK也是该表上的聚集索引,您应该知道聚集索引键也包括在该表上的任何非聚集索引中。
ogrnizationarticle
中的OAID字段必须是“唯一键”或主键
有关更多信息,请参见。@axrwkr-是的,很好。OP应该选择一个名字并坚持下去。而不是
O\u Article\u ID
vsOID
vsOAID
。并在他们使用时修复拼写错误的ogrnization
!在ogrnizationarticle
中需要一个与foerign键匹配的键,但是ogrnizationarticle
中的主键有两列。