create database studentuse studentcreate table A
(
  ID int  identity(1,1) primary key,
  Name varchar(20) not null,
  Grade varchar(20)not null,
  SchoolId int )insert into A values('张三','小一',4)
insert into A values('李四','初一',4)
insert into A values('王五','小二',5)
insert into A values('赵六','高三',5)
insert into A values('刘二','高二',4)
insert into A values('钱一','高一',2)
insert into A values('周三','高三',4)
insert into A values('郑武','初二',5)
insert into A values('吴六','高二',5)
insert into A values('孙七','高一',2)
insert into A values('王八','初一',3)
create table B
(
 ID int identity(1,1) primary key,
 SID int,
 foreign key(SID) REFERENCES A(ID) ,
 Tdate datetime not null ,
 Thours int not null
)
insert into B(Tdate,Thours) values('2007-8-21',2)
insert into B(Tdate,Thours) values('2007-8-22',2)
以上是我创建的表A和表B,表B SID 是表AID的外键。,可是有问题高不明白,表B SID 不能插入值,受外键约束,还有一问题是不是主键和外键的数值是不是必须保持一致呢,请高手帮帮忙

解决方案 »

  1.   

    表A中没有id为2的记录,外键的值必须存在于对应表的主键中
      

  2.   

    先在A表中插入值后,才可以在B表中插入值。主键和外键的数值必须保持一致,B表中SID的值必须是A表中ID有的才可以。
      

  3.   


    b表中要插入sid字段的值,否则被外键约束了insert into B(sid,Tdate,Thours) values(2,'2007-8-21',2)
    insert into B(sid,Tdate,Thours) values(2,'2007-8-22',2)
      

  4.   


    楼主先弄清楚主键和外键的关系,B表中SID的值必须是A表中ID的值相对应,否则就不能插入
      

  5.   


    插入b表的时间,必须要插入b表中sid字段的值,该值必须在a表中存在
      

  6.   

    哦,行了,昨天我也添加了,就是A表的ID和B表SID没有保持一致,能不能叫他们自动保持一致啊????手动添加岂不是很麻烦
      

  7.   

    表A不设为自动增长型,在insert语句加入id列值,这样表b的外键就可以在insert语句中对比添加了
      

  8.   

    hehe ,都设置主外键了,数据的完整性当然得保证了