SQL 插入 - 字符串或二进制数据将被截断为 INT 值

SQL Insert - String or binary data would be truncated for INT values

我在尝试向我的 table 之一插入整数时遇到 "String or binary data would be truncated" 错误。

我已经阅读了几本 post 关于列的长度与插入的值的长度的关系,但是一旦列都是 int 或 smallint 类型,我的情况似乎就不是这样了并且值都是最大两位数。

table结构如下:

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)

我得到的错误如下:

Server: Msg 8152, Level 16, State 2, Line 1 String or binary data would be truncated. The statement has been terminated.

如果这有什么不同,我正在使用 SQL Server 2000。

请告诉我你的想法。

谢谢!

看起来问题出在您的 [DF_tblvUserLocation_Last_Updated_By] 约束条件上。

它正在提取当前用户名,该用户名很可能比您的 [Last_Updated_By]VARCHAR(10) 的长度更长。

将您的 DDL 更新为:

[Last_Updated_By] [varchar] (128)