首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新varchar似乎失败了

更新varchar似乎失败了
EN

Stack Overflow用户
提问于 2014-02-03 19:15:54
回答 1查看 190关注 0票数 0

我正在使用一个现有的Server 2000数据库,该数据库包含一个字段"Rev1“。该字段最初设计为varchar(2)。最近,我们已经转移到一个新的ERP系统,并遵循他们需要有5个可用的字符来存储。问题够简单了,所以我输入了表的设计,并增加了尺寸。我观察到以下错误:

代码语言:javascript
复制
String or binary data would be truncated. The statement has been terminated

奇怪的是,我想也许这些信息是以一种意想不到的方式被编码的,导致长度超过了列的限制。因此,我显着地增加了值,并尝试将字段更改为nvarchar。所有更改似乎都会继续向更新和插入抛出相同的错误,其值超过两个字符。我是否没有以我所期望的方式增加列宽,或者它是否有可能默默地失败并导致这些意外的结果?

简化创建:

代码语言:javascript
复制
CREATE TABLE [dbo].[Drawings](
[ID] [int] IDENTITY(1,1) NOT NULL,
[...]
[Rev1] [nvarchar](50) NULL,
[...]
CONSTRAINT [PK_Drawings] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,    
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

以下查询:

代码语言:javascript
复制
UPDATE Drawings SET Rev1 = '12345' WHERE ID = 12345

将失败,并显示错误消息和新插入。但是,如果我保持在两个字符的原始列的宽度内,查询就会成功。我还能做些什么来确保列的大小确实如我所期望的那样增长呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-03 19:23:37

听起来可能有一个触发器也在处理这些数据。检查表中是否有可能从该列获取数据并在其他地方更新/插入数据的触发器。如果是这样的话,触发器操作的列也需要用新的数据类型进行更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21535776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档