說的一列實施「主」 ID值,我有3個表如下所示:如何在數據庫表
人
PERSONID INT [PK,獨特的clust IDX,身份是]
PERSONNAME VARCHAR(50)[非空]
的ContactID INT [獨特的非clust IDX,非空,FK到聯繫表的使用ContactID柱]
公司
CompanyId INT [PK,獨特的clust IDX,身份是]
公司名稱VARCHAR(100)非空]
的ContactID INT [獨特的非clust IDX,非空,FK到聯繫表的使用ContactID列]
聯繫
的ContactID INT [PK,獨特的clust IDX,身份是]
CreatedDate DATETIME [非空,默認值GETDATE()]
我將展示在以下3個插入操作所需的最終結果(首發與所有空的桌子)...
我插入一行到人,並希望結束:
Person表 -
PERSONID 1
PERSONNAME '第一人稱'
的ContactID 1
聯繫表 -
ContactId 1
CreatedDate getdate()value
然後我插入一行到公司,並希望與落得:
公司表 - CompanyId 1
公司名稱 '一公司'
的ContactID 2
聯繫表 - ContactId 2
CreatedDate getdate()值
我在Person中插入第二行,並將wan噸到結束:
Person表 - PERSONID 2
PERSONNAME '第二人'
的ContactID 3
聯繫表 - 的ContactID 3
CreatedDate GETDATE()值
我希望上面的說明清楚了我正在努力完成的事情,即,我想使用Contact表作爲一種「唯一值生成器」類型的機制,這樣我就可以在任何時候向Person或Company插入一行(或任何額外的表,我想將類似的ContactId列插入),任何/所有這些表中的每個ContactId值都將是唯一的。
什麼是最有效的方法來實現這一目標?是否有可能通過Person和Company表上的觸發器執行此操作,以便我只能從應用程序代碼執行一次插入操作(如果是這樣,觸發器代碼將如何)?或者我總是必須從我的應用程序代碼中執行多個I/O操作,其中我首先向Contact表插入一行,返回scope_identity()值,然後將該值用於插入Person的ContactId值或公司?還是其他一種比其中任何一種更好的方法?
任何見解都非常感謝!
另外,我對我的帖子的格式道歉的ContactID序列 - 我試圖用回車,但他們似乎並沒有「拿」...... – user2075599 2013-02-15 13:26:22
呃......一個小問題,如何確保回車在工作崗位上「工作」?我搜索了常見問題,並沒有看到任何關於這個...... – user2075599 2013-02-15 14:04:51