SQL插入 - 对于INT值,将截断字符串或​​二进制数据

时间:2016-06-16 14:40:05

标签: sql sql-server insert sql-server-2000 sql-insert

我在获取"字符串或二进制数据时会在尝试将整数插入其中一个表时被截断" 错误。

我已经阅读了几篇关于列的长度与插入的值的长度的帖子,但是一旦列都是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。

请让我知道你的想法。

谢谢!

1 个答案:

答案 0 :(得分:4)

看起来问题来自您的[DF_tblvUserLocation_Last_Updated_By]约束。

它提取的当前用户名可能比[Last_Updated_By]VARCHAR(10)的长度更长。

将您的DDL更新为:

[Last_Updated_By] [varchar] (128)