0

这应该是一个简单的过程,但我遇到了麻烦。我有一个插入命令。其中一个值必须是 = 到 -1。该字段被定义为一个小整数,因此它应该接受正值和负值。

插入语句是

insert into MasterData2 ([Ad],[Phase],[Page Type] , [Page], [Percent] , [Change Type],[UserName], [Timestamp], [Qty]) 
values(@Ref, @PhaseName , @PageType , @Page , @Percent ,@ChngType, @UserName, @Timestamp, -1)

字段 [Qty] 需要为 -1

4

1 回答 1

1

如果您需要同时存储 POSITIVE 和 NEGATIVE 值,您可以使用的最小整数类型是 smallint。tinyint 仅适用于 0 到 255 的正值。

MSDN 参考:tinyint、smallint、int、bigint

Data type | Range
======================
bigint    | -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
int       | -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
smallint  | -2^15 (-32,768) to 2^15-1 (32,767)
tinyint   | 0 to 255

参见示例:

create table #tmp (t tinyint, x smallint)
insert #tmp select 1,-1

-- OK

insert #tmp select -1,-1

--
Msg 220, Level 16, State 2, Line 1
Arithmetic overflow error for data type tinyint, value = -1.
The statement has been terminated.
于 2013-05-08T03:17:16.230 回答