2009-01-25 78 views
1

我在我的數據庫中有許多相互關聯的表。我有一個表(表一),它有數據插入和id自動遞增。一旦該行有一個ID,我想用另一組來自表單的ID(這個數據也會進入一個表,所以它可以來自該表)插入到表中(表3)作爲進入第一個表格的數據來自於的形式。觸發插入到同一個表中

這兩個ID一起構成第三個表的主鍵。

我該如何做到這一點,它表明多個ID加入到一個單一的ID作爲別的東西。

謝謝。

+0

請提供一些示例代碼。這是一個設計問題嗎?或觸發問題?如果是這樣,請包含觸發代碼。 – 2009-01-25 18:29:22

回答

0

我想你也許可以做你描述(只寫插件,以表3)表1觸發器),但你得把表的附加信息3行到表1的行,這不是很聰明。

我看不出爲什麼你會這樣做,而不是在你的代碼中寫INSERT,讀者可以看到發生了什麼。

觸發器的問題在於它們可以很容易地隱藏數據庫中的業務邏輯。我認爲(我相信我在這裏佔多數)認爲,理解,管理,維護和通常全面處理所有業務規則存在於同一個總體領域的應用程序更容易。

就像使用存儲過程有理由一樣,有理由使用觸發器(例如傳播非規格化值)。我要斷言他們主要與性能關鍵領域有關。或者應該。

1

你不能通過觸發器來做到這一點,因爲觸發器只能獲得你已經插入的數據,而不是隻存在於用戶界面中的數據。

通常情況下,你如何處理這種情況是你編寫了一個插入會議的存儲過程,返回id值(在SQL Server中使用scope_identity(),但我相信其他數據庫將有方法返回自動更新,生成的ID也是如此)。然後,您將使用該值將該表所需的其他值插入到其他表中。你當然想要把整個事情包裝在一個交易中。

相關問題