SQL中两个表相互为外键关联,如何进行更新?

brilliant123 2003-03-12 05:05:48
SQL中两个表相互为外键关联,如何进行更新?

其中,表的结构是这样的:
CREATE TABLE [dbo].[echoice] (
[id] [int] NOT NULL ,
[choice] [varchar] (300) COLLATE Chinese_PRC_CI_AS NULL ,
[title_id] [int] NOT NULL
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[etitle] (
[id] [int] NOT NULL ,
[question] [varchar] (600) COLLATE Chinese_PRC_CI_AS NULL ,
[answer] [int] NOT NULL
) ON [PRIMARY]
GO

echoice.title_id 是 etitle.id的外键
而 etitle.answer 又是echoice.id的外键

那么如何更新这两个表呢?
...全文
1393 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
babytong 2003-03-13
  • 打赏
  • 举报
回复
如果不写存储过程,用程序实现,你可以使用.net的事物处理,这样也可以达到目的
babytong 2003-03-13
  • 打赏
  • 举报
回复
你用外键不如写过存储过程来处理数据的完整性。那样效果还要好些。你可以控制数据的录入的先后顺序,表结构建议只建立一个title_id与id(etitle)的外键
brilliant123 2003-03-13
  • 打赏
  • 举报
回复
to chyich() :
一般都是单选题,不存在答案字段放多个选项表的id,所以和试题放在一起结构更完整一些。只是处理起来的时候,就需要来回对两个表进行插入、更新

先写etitle: id,question
再写echoice: id,choice,title_id
最后还要写回etitle: answer


而且不能根据事务处理的需要,建立双向的外键关联,靠程序来判断总觉得其约束不是很强。现在也就是这个问题了。也不是说程序解决不了,只是不知道还有没有更好的办法
chyich 2003-03-13
  • 打赏
  • 举报
回复
我试了一下,关系是能建起来,但不能插入数据,也就是不能更新数据库。建议你还是多建一张表,记录它们的关联关系。
terryxin 2003-03-12
  • 打赏
  • 举报
回复
看来是表结构不合理,把答案放在一张单独的表中,在关联就可以了
chyich 2003-03-12
  • 打赏
  • 举报
回复
我好象看明白了一点,应该是一对多的关系,即一个试题对多个选项,但你又在试题表放了本题的答案,答案字段应该放试题的选项表的id,可能就要放多个选项表的id,所以你处理不了.我觉得你应该再建一个关联表,用于关联试题的答案.这样才能处理.
brilliant123 2003-03-12
  • 打赏
  • 举报
回复
etitle放的是试题的问题
echoice放的是试题的选项
csdn_bob 2003-03-12
  • 打赏
  • 举报
回复
还是不清,etitle是放的什么数据,id代表什么,。。。。
echoice放的是什么数据》
brilliant123 2003-03-12
  • 打赏
  • 举报
回复
我是建好表结构以后,在企业管理器里面再设置的
可以设置这样的循环外键,但是设置了以后,根本就没有办法操作这两个表了
这两个表主要是用来存储网上考试的数据:
etitle存放的是 id, question(问题),answer(正确答案的id号,与echoice的id外键关联)
echoice存放的是id,choice(答案选项),title_id(所对应的问题id,与etitle的id外键关联)

如果只靠设置外键的话,好像是行不通了
cuike519 2003-03-12
  • 打赏
  • 举报
回复 1
绝对数据库设计有问题!
cuike519 2003-03-12
  • 打赏
  • 举报
回复
在你建立表的时候看不出来有外键,我想SQL Server也不让你这样做!所以我想你这样是不可能的!
csdn_bob 2003-03-12
  • 打赏
  • 举报
回复
说说表的实际用意,说不定表的结构不合理呢?!
brilliant123 2003-03-12
  • 打赏
  • 举报
回复
好像这样的话,根本就没有办法insert或是delete操作
heroyujun 2003-03-12
  • 打赏
  • 举报
回复
循环的外键SQL是不允许的
chyich 2003-03-12
  • 打赏
  • 举报
回复
echoice.title_id 是 etitle.id的外键
而 etitle.answer 又是echoice.id的外键
----------------------------------------
?没看懂!

62,241

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧