当我尝试伪造使用用户定义的数据类型的表时,出现以下错误。
COLLATE 子句不能用于用户定义的数据类型。{,1}
看起来这是 tSQLt 中的一个已知问题。
https://groups.google.com/forum/?fromgroups#!topic/tsqlt/AS-Eqy6BjlA
除了更改表定义之外,是否有解决方法?谢谢。
当我尝试伪造使用用户定义的数据类型的表时,出现以下错误。
COLLATE 子句不能用于用户定义的数据类型。{,1}
看起来这是 tSQLt 中的一个已知问题。
https://groups.google.com/forum/?fromgroups#!topic/tsqlt/AS-Eqy6BjlA
除了更改表定义之外,是否有解决方法?谢谢。
感谢 Chris Francisco,现在有一个补丁:
仅供参考,我遇到了同样的问题,并且能够通过深入研究 tSQLt 代码来解决它。有一个名为 Private_GetFullTypeName 的函数
函数返回的最后一列名为“Collation”,如果变量 @CollationName 为空,则返回空字符串 ''。如果您将“OR is_user_defined = 1”添加到空字符串的条件中,我就能够伪造具有用户定义数据类型的表。
我没有遇到这种改变带来的任何奇怪的副作用,但我不是 tSQLt(或一般的 tSQLt)内部工作的专家,所以这可能会破坏其他地方的功能。
换句话说:
CASE WHEN @CollationName IS NULL OR is_user_defined = 1 THEN ''
ELSE ' COLLATE ' + @CollationName