我正在研究Server 2008。
我从表中删除所有数据,然后尝试将值插入到表中。下面是代码:
TRUNCATE TABLE [dbo].[STRAT_tmp_StratMain]
INSERT INTO [dbo].[STRAT_tmp_StratMain] ([FileNum])
SELECT [dbo].[STRAT_tmp_Customer].[NumericFileNumber]
FROM [dbo].[STRAT_tmp_Customer];FileNum在STRAT_tmp_StratMain中是浮点数,也是索引,不能为null。
NumericFileNumber是浮动的,可以是空的,但从不是空的,并且其中没有重复的项(每一行都是唯一的编号)。
表STRAT_tmp_StratMain包含更多的字段,但所有字段都可以为null,而且还具有一个defualt值。
当我试图运行这个查询时,我会得到以下错误:
Msg 8152、级别16、状态4、第1行字符串或二进制数据将被截断。声明已被终止。
我也试着简单地做:
INSERT INTO [dbo].[STRAT_tmp_StratMain] ([FileNum]) Values (1);仍然会有同样的错误。
有什么想法吗?
谢谢你,伊兰
发布于 2015-08-12 20:54:23
我无法重述你的问题。当我在Server 2008上运行此代码时,没有出现错误:
DECLARE @tt TABLE (FileNum float NOT NULL);
INSERT INTO @tt (FileNum) VALUES (1);检查目标表中所有列的默认约束,并确保它们都不会尝试插入将被列的数据类型限制截断的字符串值。
示例: SomeColumn varchar(1)默认的“Hello”
https://stackoverflow.com/questions/31975100
复制相似问题