说的一列实施“主” 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