在多个外键位于SQL Server表中的位置插入数据

时间:2017-03-01 16:18:18

标签: asp.net sql-server entity-framework sql-server-2014

我有三张表:

  • 教师
    • 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表中插入记录?

2 个答案:

答案 0 :(得分:0)

您的表中不能有一个字段是两个不同表的外键。您需要做的是更改您的数据结构,以便将您的学生和教师放在同一个表中,并在Post表中使用该主键,或者在Post表中有两列 - 一个对于Teacher主键和一个用于Student主键,并根据发布帖子的人填充相应的主键。

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

答案 1 :(得分:0)

最后---我找到了解决方案。

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

如果教师在群组中发布数据

  

if(A_pk!= null){Insert A_pk and Insert C_pk}

如果学生在群组中发布数据

  

else if(B_pk!= null){Insert B_pk and Insert C_pk}

先生,谢谢 KumarHarsh 1小时前