我有两张桌子。俱乐部和教练。 它们之间是0,1 - 0,1的关系(教练可以有零个或一个俱乐部,俱乐部可以有零个或一个教练)。 当我想改变俱乐部的教练时,我必须更新俱乐部桌。所以我必须改变该俱乐部的idCoach。让我们考虑一个新的教练(新分配的俱乐部教练)已经是其他俱乐部的教练。我必须设置为该俱乐部的空场idCoach,因为他的教练将被分配到另一个俱乐部。 另外,如果我想改变教练的俱乐部已经有教练,那么我必须将该教练的idClub(在教练表中)设置为Null。MS SQL触发器更新调用死锁?
上面给出的所有,也适用于当我想改变某个教练的俱乐部。 (必须设置为特定教练的前一个俱乐部的空idCoach场,并且必须设置为新俱乐部的空idCoach)。
当我在Club或Coach表中插入新记录时,或者删除现有(插入,更新和删除时,我必须注意相应的引用并取消关联),可能会发生同样的问题。
我想用触发器解决这个问题。我想我必须在俱乐部桌上有3个触发器(用于插入,更新和删除),还有3个在教练桌上。
在更新触发器(例如俱乐部)中,我必须更新教练表,这将再次触发俱乐部更新(因为它的身体上必须更新俱乐部表),并且该触发器将更新教练和触发等等。所以我会死锁。
如何解决这个问题?
这是有史以来第一次我和触发器工作,提前很抱歉,对于一个简单的事情,这个大的解释。
干杯!
这就是为什么新开发人员不应该被允许创建触发器的原因。我觉得奇怪的是,人们会认为它一次只能记录一条记录,但后来我是一名数据库专家,并且我认为这是一套。从未想到他们不会成套工作。 – HLGEM 2008-12-02 16:35:04