我有兩張桌子。俱樂部和教練。 它們之間是0,1 - 0,1的關係(教練可以有零個或一個俱樂部,俱樂部可以有零個或一個教練)。 當我想改變俱樂部的教練時,我必須更新俱樂部桌。所以我必須改變該俱樂部的idCoach。讓我們考慮一個新的教練(新分配的俱樂部教練)已經是其他俱樂部的教練。我必須設置爲該俱樂部的空場idCoach,因爲他的教練將被分配到另一個俱樂部。 另外,如果我想改變教練的俱樂部已經有教練,那麼我必須將該教練的idClub(在教練表中)設置爲Null。MS SQL觸發器更新調用死鎖?
上面給出的所有,也適用於當我想改變某個教練的俱樂部。 (必須設置爲特定教練的前一個俱樂部的空idCoach場,並且必須設置爲新俱樂部的空idCoach)。
當我在Club或Coach表中插入新記錄時,或者刪除現有(插入,更新和刪除時,我必須注意相應的引用並取消關聯),可能會發生同樣的問題。
我想用觸發器解決這個問題。我想我必須在俱樂部桌上有3個觸發器(用於插入,更新和刪除),還有3個在教練桌上。
在更新觸發器(例如俱樂部)中,我必須更新教練表,這將再次觸發俱樂部更新(因爲它的身體上必須更新俱樂部表),並且該觸發器將更新教練和觸發等等。所以我會死鎖。
如何解決這個問題?
這是有史以來第一次我和觸發器工作,提前很抱歉,對於一個簡單的事情,這個大的解釋。
乾杯!
這就是爲什麼新開發人員不應該被允許創建觸發器的原因。我覺得奇怪的是,人們會認爲它一次只能記錄一條記錄,但後來我是一名數據庫專家,並且我認爲這是一套。從未想到他們不會成套工作。 – HLGEM 2008-12-02 16:35:04