2017-03-01 44 views
0

我有三个表:其中多个外键在SQL Server表中插入数据

  • 教师
    • PK:A_pk
  • 学生
    • PK: B_pk
    • PK: C_pk
    • FK: A_pk
    • FK: B_pk

我有,用户编写不同职位的网站页面。

当老师认为论坛中发帖,我将数据插入到Post表是这样的:

A_pk = teacherName
C_pk = Post_text

当学生在该组中后,我将数据插入到Post表像这样的:

B_pk = studentName
C_pk = Post_text.

原因是我想保留记录哪个用户在我的组中发布数据。

现在的问题是如何在Post表中插入记录?

+0

禁用FK并不是一种好的做法,因此您必须在插入表C之前在表A和表B中插入丢失的PK。这是没有办法的。也许我们可以帮助你的桌子设计?如果你(或某人)在C中强制FK约束,为什么你没有表A和B的值? – asemprini87

+0

为什么插入没有相应主键的外键? – iamdave

+0

我已更新我的帖子。请再读一遍 –

回答

0

您的表中不能有一个字段作为两个不同表的外键。你需要做的是改变你的数据结构,让你的学生和老师在同一个表中,并使用Post表中的主键,或者在Post表中有两列 - 一个用于Teacher主键,另一个用于Student主键并根据谁发布帖子来填充相应的主键。

绝对没有必要也没有理由在同一个字段中拥有两个不同表的ID。这样做会是糟糕的设计。

0

终于---我找到了解决方案。

其实它非常简单...就像你可以有可为空的FK.so,当你为学生插入时,那么A_PK可以为null,反之亦然。 -

如果老师在组发布的数据比

如果(A_pk!= NULL){插入A_pk和插入C_pk}

如果学生张贴在组数据比

否则,如果(B_pk!= NULL){插入B_pk和插入C_pk}

非常感谢爵士 KumarHarsh 1小时前

相关问题