当前位置: 代码迷 >> Sql Server >> SQL Server中的一个关系的处理有关问题
  详细解决方案

SQL Server中的一个关系的处理有关问题

热度:77   发布时间:2016-04-27 17:24:40.0
SQL Server中的一个关系的处理问题.
我建立了三个表:
users,主要字段有id
partys,主要字段有id, userid
joins,主要字段有id, partyid, userid

我想建立三个关系:
FK_joins_users,主键users.id, 外键joins.userid, 应用ON DELETE CASCADE ON UPDATE CASCADE
FK_joins_partys,主键partys.id, 外键joins.partyid, 应用ON DELETE CASCADE ON UPDATE CASCADE
FK_partys_users,主键users.id, 外键joins.userid, 应用ON DELETE CASCADE ON UPDATE CASCADE

这三个关系不能同时存在,只能拥有其中的两个,否则就会提示错误.
希望谁能给我一个理想的解决办法,或者告诉我下,应该建立哪两个关系更好些.

提示:表users有可能不会被删除记录,注意是有可能.所以还需要考虑有删除记录的情况.

------解决方案--------------------
没有说清楚,第三个关系好象不错
------解决方案--------------------
可以理解为
users 用户表
partys 活动表 userid是组织者
joins 参与者表

那么关系就很简单了,关系显然应该去掉 FK_partys_users

------解决方案--------------------
SQL code
create table users(id int primary key) create table partys(id int primary key,userid int foreign key references users(id) ON DELETE CASCADE ON UPDATE CASCADE ) create table joins(id int primary key    ,partyid int foreign key references partys(id) ON DELETE CASCADE ON UPDATE CASCADE     ,userid int foreign key references users(id) --ON DELETE CASCADE ON UPDATE CASCADE        --应该去掉这个级联更新,否则会出错。将 FOREIGN KEY 约束 'FK__joins__userid__70DE8F2F' 引入表 'joins' 中将导致循环或多重级联路径。         --请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。)go drop table joins,partys,users
  相关解决方案