SQL Server:在BIGINT列中存储INT可能有问题吗?

SHR*_*SHR 1 sql-server types function

我有以下结构中的映射表:

CREATE TABLE MappingTable 
(
    TableName SYSNAME,
    SrcId BIGINT,
    DstId BIGINT,
    PRIMARY KEY (Name, SrcId),
    UNIQUE (Name, DstId)
)
Run Code Online (Sandbox Code Playgroud)

SrcId并且DstId指的Identity是2个相同数据库中的列,大多数列类型INT但是有些是BIGINT,因此我将所有列存储为BIGINT.

现在,我想写的功能得到DstIdTableNameSrcId.

所以我的问题很简单:我有没有理由实现2个功能,一个用于INT第二个用于第二个用于BIGINT

澄清一下:我读了我写的内容:当写一篇文章的时候,INT它的内容是"读" INT,同样适用BIGINT.

Sam*_*ami 5

我是否有任何理由实现2个功能,一个用于INT,第二个用于BIGINT?

对此的简单回答不,您只需要一个函数BIGINT,例如:

DECLARE @BigInt BIGINT = 922337203685477580;
DECLARE @Int INT = 2147483647;

--SET @Int = @BigInt; this wont work, so your choice is BIGINT
SET @BigInt = @Int;
Run Code Online (Sandbox Code Playgroud)

这里有一个test功能,使它非常清楚.


+-----------+--------------------------------------------------------------------------+---------+
| Data type |                                  Range                                   | Storage |
+-----------+--------------------------------------------------------------------------+---------+
| bigint    | -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807) | 8 Bytes |
| int       | -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)                         | 4 Bytes |
+-----------+--------------------------------------------------------------------------+---------+
Run Code Online (Sandbox Code Playgroud)

看到 int, bigint, smallint, and tinyint