-2

我在尝试更新表中的行时遇到问题。我收到一个错误:

字符串或二进制数据将被截断

但是,我已经仔细检查了插入数据的长度和列长度,它们都在参数范围内,所以我不知道是什么原因造成的。

这只是表中每一行的简单更新语句,如下所示:

UPDATE [tblAssets]
SET [DepartmentID] = 'B13F3C7B7489';

tblAssets.DepartmentID 列是一个字符,所以我不明白我怎么可能会收到截断错误。

列定义如下:

[DepartmentID] [char](20) NULL

我的帐户具有跨服务器的管理权限,因此这不是权限问题。我什至尝试创建一个变量并通过 select 语句从另一个表中加载适当的数据,但这也不起作用。

我可以手动将该数据剪切粘贴到单个记录中,但它不会让我通过 SQL 查询对表执行更新。服务器是 MS SQL 2008 R2。

  • 这个问题已经解决了。在表级别有一个我不知道的触发器。下面回答。
4

2 回答 2

1

我只是大胆猜测一下,您以某种方式将 unicode 或不可见字符偷偷带入了更新字符串值:尝试使用 unicode 数据更新常规字符(或 varchar)字段时,您会收到相同的错误消息。

于 2013-07-24T16:40:43.657 回答
1

事实证明,桌子上有一个更新触发器。此触发器未显示在数据库的触发器文件夹中。运行此语句向我展示了它们:

SELECT * FROM sys.triggers WHERE parent_id = object_id('tblAssets')

选择表,打开触发器文件夹,然后右键单击触发器并禁用它,这样更新才能正常工作。我最初忽略了表级别的触发器文件夹。

于 2013-07-24T16:52:38.207 回答