2013-06-07 14 views
6

Bu MSDN page durumları:Niçin silinebilir bir rowversion sütunu bir varbinary'ye semantik olarak eşdeğerdir (8)?

bir nonnullable rowversion kolonu ikili (8) kolona semantik olarak eşdeğerdir. NULL olabilecek bir rowversion sütunu, varbinary (8) sütununa eşdeğer olan eşdeğeridir.

bir nonnullable rowversion sütunu bir ikili (8) kolona anlama sahip olduğunu düşünürsek, neden bir null rowversion sütun varbinary (8) sütun ve bir null ikili (8) kolon anlam eşdeğer olduğunu söylüyorlar?

Bu, null yaprağa dönüşebilen bir rowversion sütununun anlamsal olmayan bir ikili (8) sütuna semantik olarak eşdeğer olmadığı anlamına mı geliyor?

Benim özel örneğim, diğer tablolardaki satır kopyalarını içerecek bir tabloya sahip olacağım. Bazı kaynak tabloları bir satır dönüşüme sahiptir ve diğerleri yoktur. Bu nedenle, tablomdaki "rowversion" sütunu boş değerleri kabul etmelidir. Sütunun niçin (veya eğer) sütununun ikili (8) null yerine null (8) null olması gerektiğini anlamak istiyorum.

+0

@Andomar Sorgumu neden bilmek istediğimi açıklamak için güncelledim. –

+0

Harika, şimdi daha iyi. Yine de yakın bir oyu geri çekilemez. – Andomar

+2

"İkili (8)" tipi bir sütun ** her zaman ** 8 baytlık bir depolama alanı içerecektir - içeride saklananlardan bağımsız olarak - hatta "NULL". Bunun nükleik bir versiyonu - varbinary (8) - ancak gerçekten ihtiyaç duyulduğu kadar fazla alan kaplar (artı ek yük). –

cevap

1

İkili (8), 8 bit bayt içeren bir ikili dosyadır. Bir varbiner (8), 8 bayta kadar bir ikilidir. A boş değer 0 bayttır. 0 veya 8 bayta sahip olabilen bir form olmalıdır. Dolayısıyla, bu varbinary olmalıdır.

+0

Eh… Onu satın almıyorum. Özellikle, bir null ikili (8) (veya herhangi bir sabit genişlikli veri türü) olabilir. –

+0

Ne satın almak için? Boş değerler, veri satırı için ayrı bir bayt üzerinde ayrı bitlere kaydedilir. İlk null sütun, depolamaya bir bayt ekler ve bundan sonra her bir sekizinci null, depoya bir bayt ekler.'Null ness', sıranın 'üstbilgisinde' sayısal olarak saklanır. Bunun boş olması için null eklendiğinde, bir varbin ile aynı depolamaya sahiptir. – jerrylagrou

+0

Bir sütunun null karakteristiğinin ve değişken uzunluktaki bir kolonun ortogonal kavramlar olduğunu söylüyorum. Bu duruma özel olarak, rowversion sütununun null olması neden zorunlu olarak varbinay (8) NULL ve ikili değil (8) null olduğunu ima eder? Birincisi, 8 bayt (veya null) değerine (ve dahil) kadar herhangi bir uzunluğa sahip bir ikili değer olabileceğini ima ederken, bu, 8 baytlık bir ikili değer (veya boş) olabileceğini ima eder. –