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