【发布时间】:2013-06-07 11:56:29
【问题描述】:
我有两张桌子。表 A 和表 B。
TableA 包含一个 varbinary(max) 列 - 名为 [BinaryA]
TableB 包含一个包含每个 varbinary 卷的列(名为“Volume”,类型为“Long”)。
为了选择我查询的所有卷
SELECT ID, MyVolume = DATALENGTH([Binary])
FROM [VAULT].[TABLEA]
然后,我想用它的体积更新 tableB。
我接着写
update [TableB]
set [VOLUME] = ( SELECT MyVolume = DATALENGTH([Binary])
FROM [VAULT].[TABLEA] ab
WHERE id = ab.[Id])
我收到的比
Cannot insert the value NULL into column 'Volume', table 'MySchema.Asset';
column does not allow nulls. UPDATE fails.
虽然我在运行时没有收到任何 NULL
SELECT ID, MyVolume = DATALENGTH([Binary])
FROM [VAULT].[TABLEA]
【问题讨论】:
-
TableA 和 TableB 是否相关?如果您的子选择返回多行,则将您的 VOLUME 设置为您的子选择将失败。您是否尝试将 tableA 连接到 tableB?