Sql server 无法创建与其他表的外键关系
我正试着这么做Sql server 无法创建与其他表的外键关系,sql-server,Sql Server,我正试着这么做 CREATE TABLE [dbo].[tblPerson]( [ID] [int] NOT NULL, [Personame] [varchar](50) NULL) [Email] [varchar](50) NULL, [GenderId] [int] NULL CREATE TABLE [dbo].[tblGender]( [id] [int] NOT NULL, [Gender] nvarchar NOT NULL) Alter table tblPerson Ad
CREATE TABLE [dbo].[tblPerson](
[ID] [int] NOT NULL,
[Personame] [varchar](50) NULL)
[Email] [varchar](50) NULL,
[GenderId] [int] NULL
CREATE TABLE [dbo].[tblGender]( [id] [int] NOT NULL, [Gender] nvarchar NOT NULL)
Alter table tblPerson Add Constraint tblPerson_GenderId_FK Foreign Key (GenderId) references tblGender(id)
我不知道为什么会出错
Msg 547,16级,状态0,第2行
ALTER TABLE语句与外键约束tblPerson\u GenderId\u FK冲突。数据库Sqlkudavenkat表dbo.tblGender列“id”中发生冲突
我怀疑tblGenderis是一个新表,在这种情况下,您需要在创建外键之前用值填充它
假设在tblPerson中,您在GenderID中使用了2个值
0 meaning male
1 meaning female
然后您的查询可能如下所示:
CREATE TABLE [dbo].[tblGender]( [id] [int] NOT NULL, [Gender] nvarchar(100) NOT NULL)
insert into tblGender(id, gender)
select distinct p.GenderID,
case when p.GenderID = 0 then 'Male'
when p.GenderID = 1 then 'Female'
else 'it came from outer space'
end
from tblPerson p
Alter table tblPerson Add Constraint tblPerson_GenderId_FK Foreign Key (GenderId) references tblGender(id)
错误很明显,tblPerson中有一条记录的GenderID列中的值在tblGender中不存在。如果TBLGender是一个新表,则必须首先在TBLGender中修复该记录,然后才能创建外键。如果TBLGender是一个新表,则必须首先使用列GenderID中的所有值填充该记录。tblPersoni将插入数据并添加外键,并查看其工作方式。我建议您不要将名称ID用作主键。我最恼火的事情之一是列在表之间更改名称。无论他们在哪张桌子上,人形都是人形。另外,tbl前缀也不是一件好事。你只是假设外星人的性别吗?我将插入数据并添加外键,然后看看它是如何实现的works@JacobH我不明白你的意思?@Akula只是开了个玩笑,问的另一个问题是“它来自外太空”。