Ɖia*_*zeƦ 6 sql-server database-design sqldatatypes
此MSDN页面指出:
不可空的rowversion列在语义上等同于二进制(8)列.可空的rowversion列在语义上等同于varbinary(8)列.
鉴于不可存活的rowversion列在语义上等同于二进制(8)列,为什么可空的rowversion列在语义上等同于varbinary(8)列而不是可空的二进制(8)列?
这是否意味着可空的rowversion列在语义上在语义上不等于可空的二进制(8)列?
我的具体例子是我将有一个表,其中包含来自其他表的行的副本.某些源表具有rowversion而其他源表没有.因此,我的表中的"rowversion"列必须接受空值.我想了解为什么(或者如果)列应该是varbinary(8)null而不是binary(8)null.
小智 1
二进制 (8) 是恰好有 8 个字节的二进制。varbinary(8) 是最多 8 个字节的二进制文件。null 是 0 字节。它必须是可以有 0 或 8 个字节的形式。因此它必须是 varbinary。