日期:2014-05-18  浏览次数:20655 次

这种表之间的关系怎样建立??
举个例子:有两个表A和B
A中有sysid(标识字段),Baseinfo字段
B中有Name,NationID字段

B中的NationID字段取A中的sysid值,但也可以为空!!

有这样的问题:
要求如果B中的某条记录通过nationid已经关联到了A中某个sysid,则A中的这条记录就
不能被删除,否则就允许被删除.

这种关系如何建立.

通过SQL中的级关联应该是使用不了吧???因为外键建立不起来呀...????
难道一定要在程序中判断吗?




------解决方案--------------------
在表B上建一个for delete触发器,用来检查约束。
------解决方案--------------------
外键可以建立
alter table B
add constraint FK_tt
foregin key(NationID)
references A(sysid)
on delete no action --要求如果B中的某条记录通过nationid已经关联到了A中某个sysid,则A中的这条记录就
不能被删除,否则就允许被删除.
on update no action
------解决方案--------------------
可以建立主外键关系
B中的NationID(外) 和 A中的sysid(主)
但不要选择级联删除
------解决方案--------------------
可以从另外一个方面考虑:在删除B表中的数据时,使用存储过程,在存储过程中首先判断A表中是否存在要删除数据关联的数据,有就结束存储过程,返回未删除的信息。如果没有就进行删除操作。
------解决方案--------------------
http://www.lybbs.info/register.php?fromuid=1762919
------解决方案--------------------
要是我肯定做成触发器来限制

简单使用