CLR UDT可以作为桌子上的PK吗?

时间:2019-05-15 07:57:22

标签: sql-server types clr composite-primary-key primary-key-design

您可以将自己的clr udt用作表上的主键吗?看来您不能-我为二进制序列化和可比性添加了接口,但是在PK约束中使用该类型时,我收到一个错误:该类型不能在主键中使用。

那么-完全有可能吗?如果可以,我需要使用哪些属性来修饰我的类型?

*编辑: 找到了我的问题的线索:来自https://docs.microsoft.com/de-de/sql/t-sql/statements/create-index-transact-sql?view=sql-server-2017 “列”部分:如果类型支持二进制排序,则可以在CLR用户定义的类型列上创建索引。

因此二进制排序必须为“ true”(我的是false)。现在的后续问题是:如何序列化您的类型(字符串集合),使其变为二进制可排序的?

-背景信息

我这样做的原因可能是对一个糟糕的初始想法的更差的跟进:我们当前的数据库实现使用复合业务密钥。组合键的组件不在“许多”列中,而是在一列中与分隔符连接在一起。例如,“ jeep-red-ny”可以是描述位于纽约的红色(红色)吉普车的行的主键。包含此串联的列就是varchar(50)。

我想知道是否可以使用“专用”类型来容纳这三个方面(车辆类型,颜色,城市),从而使它变得更好。

我想,最好的选择是删除这些串联的键,并在不同的列中使用“普通复合”键。以整个键为一列的方式进行串联是很好的,毫无疑问,它属于什么而不属于什么。 UDT会在一个列中同时提供两个:,但可以访问所有组件。

0 个答案:

没有答案