我知道这个问题已被多次询问,但我不是SQL的PRO,所以我需要一些帮助。
我有两张桌子 - Person
和ContactNumber
。一个人可以拥有许多联系号码,每次我进行保存时都需要将所有联系号码插入ContactNumber
表。我正在考虑有一个联系号码的数组/集合,Person id
将在我插入时自动生成。
我正在寻求帮助的是,我该如何实现?我在网上找到的解决方案都使用XML /字符串分隔符,但我认为在我的情况下它不起作用。或者它可以,但我不确定如何将其纳入我的代码。
如果有人有解决方案,请发布代码。
提前致谢
答案 0 :(得分:2)
你有一张桌子" ContactNumber"这是" Person"的孩子。也就是说,您不能将它们存储为CSV,XML或其他任何内容。每个数字一行。
简单示例
人。主键是PersonID
PersonID, Firstname, Lastname, Gender, ...
NumberType。主键是NumberType。存储诸如" Mobile"," Home"等
NumberTypeID, NumberType
ContactNumbers。主键是PersonID,NumberType
您有Person和NumberType的外键
PersonID, NumberTypeID, PhoneNumber
评论后编辑:
使用SQL Server 2008,您可以使用表值参数将数组发送到SQL Server。最全面的文章是Erland Sommarskog的"Arrays and Lists in SQL Server 2008",
另外,不要使用@@ IDENTITY:SCOPE_IDENTITY()更安全
答案 1 :(得分:0)
这将涉及客户端和服务器上都存在的CLR用户定义类型。
另见SQL Server CLR Stored Procedure JSON Parameter
警告:这是数据库中新的OOP / CLR支持,并不是标准的SQL服务方式。