2012-05-17 58 views
0

我有兩個表格Case Table和Message Table。
一個案例可能有一些消息。
但是,消息應該有一個類似於「Case No/Msg No」的拒絕字段,並且Msg No應該位於相同大小寫的所有消息的從1開始的序列中。如何在SQL Server上的相同外鍵下具有唯一標識符

實施例:
案例1 MSG 1 - >價:1/1
案例1 MSG 2 - >價:1/2
案例2 MSG 1 - >價:2/1

消息否應該是一個序列,但只適用於相同情況下的消息。
我的問題是我如何創建MsgNo?
系統將是多用戶的,所以我不能使用get max函數來做到這一點。
只是要提到,我正在使用SQL Server 2008.
是否有任何其他方式來使用IDENTITY函數來實現這可能?
任何想法,歡迎

感謝所有幫助提前
M.A

+1

您是否需要**來存儲這個數字,或者當您從數據庫中選擇行時可以計算出來(第二個選項更容易實現,甚至可以保持穩定,假設從未發生過刪除) –

+0

我需要存儲這個號碼。謝謝 –

回答

0

創建主/詳細信息表結構。兩個表都應該有自己的ID(它總是更適合與規範化的數據庫一起工作)。然後在Detail表中創建「LineNumber」並根據主表ID進行增加。這與文檔行中的LineNumber類似。例如,您有發票和發票行,每行都有自己的ID,並且有更多的字段用於識別發票行。

+0

Daria感謝您的回覆。我不知道這個解決方案將如何幫助我,我已經有了一個Master/Detail表格結構。但我不知道如何創建您提到的LineNumber。不像我能理解的那樣是一個數據庫INTENTITY。 –

+0

不是,它不是標識字段。它是您在插入例程中管理的增量字段。像MAX(MsgNumber)+ 1 .... WHERE CaseId = X –

+0

因爲這是一個多用戶環境,我不能使用MAX函數,因爲許多用戶可能會將消息添加到同一個案例中。所以我需要找到一種方法以確保此MsgNo的唯一性並避免任何重複的錯誤,因爲此字段上有唯一的索引。 –

相關問題