小菜鸟我在学书上的BBS论坛,里面就3个数据表:users表--用户表id    PK identity(1,1)
password
emailnewpost表--新主题表postid    PK  identity(1,1)
username
posttime
views
replies
subject
message
userid  FK_postid_usersreply表--回复主题表
replyid     PK  identity(1,1)
postid      FK_reply_newpost
username
message
replytime
userid      FK_reply_users就是这样的设计啦!书上照抄的哈哈
可是为什么我创建"回复主题"时候,点"回复主题"  按钮时,用INSERT 语句向reply表添加表时,竟然出现了外键冲突!!FK_reply_users这个外键冲突!
怎么会这样啊?555555555555555
请大家帮忙看看
小菜鸟在此先谢谢啦! 

解决方案 »

  1.   

    users表--用户表 userid         PK   identity(1,1) 
    password 
    email 
      

  2.   

    就是这样的设计啦!书上照抄的哈哈 
    可是为什么我创建"回复主题"时候,点"回复主题"     按钮时,用INSERT   语句向reply表添加表时,竟然出现了外键冲突!!FK_reply_users这个外键冲突! --
    这个是因为向reply表添加记录时,要用到userid,而userid是users表的主键,如果userid不存在,那么会产生冲突
      

  3.   

    up楼上,除非插入users表userid存在或null吧,否则冲突
      

  4.   

    插入表要按主表从表顺序...把存储过程封装时要用@@Identity返回值
      

  5.   

    谢谢大家啊!
    可是我是"注册"-"登陆"后才选中某个文章对其进行回复的,这样的话,我用SESSION存储userid,userid不就不为空了吗?为什么还会冲突呢?
      

  6.   

    users表--用户表 id         PK   identity(1,1) 
    password 
    email 
    -------------------------------
    我输入错了,应该是:users表--用户表 userid        PK   identity(1,1) 
    password 
    email 
      

  7.   

    插入表要按主表从表顺序... 有外健引用主健是不能为空的。。--
    declare @i int
    insert users(  password ,email) values(..,..)
    set @i=@@identity
    ----------可用存储过程返回
    insert postid  (userid ,..)
    values(@i ,..)
      

  8.   

    我还没有学存储过程哈哈后,能用INSERT 语句实现吗?因为书上是这么写的啊?
    难道书上的代码是错的吗>?
      

  9.   

    还有,请问为什么我的VS2005 总是在我关闭它的时候说什么"出现错误",还叫我把错误发送给微软.....
    然后VS2005重新启动,是因为什么啊?为什么总有这错误呢?