我在获取"字符串或二进制数据时会在尝试将整数插入其中一个表时被截断" 错误。
我已经阅读了几篇关于列的长度与插入的值的长度的帖子,但是一旦列都是int或smallint类型并且它们似乎不是我的情况。值都是最多两位数。
表结构如下:
CREATE TABLE [tblvUserLocation] (
[User_Location_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Location_ID] [int] NULL ,
[Line_Type_ID] [int] NULL ,
[User_ID] [int] NULL ,
[Active] [smallint] NULL CONSTRAINT [DF_tblvUserLocation_Active] DEFAULT (1),
[Last_Updated] [smalldatetime] NULL CONSTRAINT [DF_tblvUserLocation_Last_Updated] DEFAULT (getdate()),
[Last_Updated_By] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL CONSTRAINT [DF_tblvUserLocation_Last_Updated_By] DEFAULT (suser_sname())
) ON [PRIMARY]
GO
我试图运行的插入内容如下:
insert into tblvUserLocation (Location_ID, Line_Type_ID, [User_ID], Active)
values (20, 2, 41, 1)
我得到的错误如下:
服务器:消息8152,级别16,状态2,行1字符串或二进制数据 会被截断。声明已经终止。
如果这有所不同,我使用的是SQL Server 2000。
请让我知道你的想法。
谢谢!
答案 0 :(得分:4)
看起来问题来自您的[DF_tblvUserLocation_Last_Updated_By]
约束。
它提取的当前用户名可能比[Last_Updated_By]
列VARCHAR(10)
的长度更长。
将您的DDL更新为:
[Last_Updated_By] [varchar] (128)