use school
go
alter table student
add constraint fk_student_parent_id_parent_id foreign key(parent_id)
references parent(id)
go
 运行这个程序之后就一直出现提示
务器: 消息 547,级别 16,状态 1,行 1
ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 'fk_student_parent_id_parent_id' 冲突。该冲突发生于数据库 'school',表 'parent', column 'id'。原来以为是修改数据ID的类型为bigint的缘故,就又改成了int型 不过还是不行,一直都没有找到冲突的原因 望高手给出结果 谢谢

解决方案 »

  1.   

    parent.id主键否?它需要是主键才行
      

  2.   

    是主键,不过parent里面没有数据 不知道是不是因为有数据的缘故?
      

  3.   

    --试试
    alter table student with nocheck 
    add constraint fk_student_parent_id_parent_id foreign key(parent_id) 
    references parent(id) 
      

  4.   

    存在于子表中的父表没有?SELECT * FROM student T
     WHERE NOT EXISTS(SELECT 1 FROM parent WHERE  parent_Id=T.ID)
      

  5.   

    是不是两个表里已经有数据啦?如果有数据了,那么现有数据必须满足要建立的外键约束,也就是需要student表里的值必须都在parent表中。否则就会出现楼主提到的错误。
      

  6.   

    if object_id('tb1') is not null
    drop table tb1
    go
    create table tb1(id int identity(1,1) primary key,name1 varchar(10))
    insert into tb1(name1)
    select 'zyw' union all
    select 'zyw' union all
    select 'zyw' union all
    select 'zyw' union all
    select 'zyw' union all
    select 'zyw' select * from tb1if object_id('tb2') is not null
    drop table tb2
    go
    create table tb2(id int, child varchar(10))
    insert into tb2
    select 1,'ffff' union all
    select 1,'ffff' union all
    select 7,'ffff' alter table tb2 
    add constraint hhh foreign key(id) references tb1(id)
    这样就报错了:
    消息 547,级别 16,状态 0,第 1 行
    ALTER TABLE 语句与 FOREIGN KEY 约束"hhh"冲突。该冲突发生于数据库"testdb",表"dbo.tb1", column 'id'。
    因为父表里面没有7
    把7改成6就成功了
      

  7.   

    能问什么那个是父表?那个是子表?如果要在student上建立一个外键,那么student是子表还是父表? 
     如果建好数据库,输入了很多数据之后又想更改外键,应该怎么弄啊?
    附:我删除了student中的数据,就可以建立外键了  谢谢呵呵!不过上面的问题感觉有很棘手了 呵呵