SQL Server: хранить INT в столбце BIGINT может быть проблема? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть таблица сопоставления в следующей структуре:

CREATE TABLE MappingTable 
(
    TableName SYSNAME,
    SrcId BIGINT,
    DstId BIGINT,
    PRIMARY KEY (Name, SrcId),
    UNIQUE (Name, DstId)
)

SrcId и DstId относятся к Identity столбцам в 2 идентичных базах данных, большинство типов столбцов - INT, нонекоторые BIGINT, поэтому я сохраняю все как BIGINT.

Теперь я хочу написать функцию для получения DstId для TableName и SrcId.

Итак, мой вопрос прост: есть ли у меня какая-либо причина для реализации двух функций, одна для INT и вторая для BIGINT?

Чтобы уточнить: я прочитал то, что написал: когда написано INT, оно читается как INT, и то же самое относится к BIGINT.

1 Ответ

0 голосов
/ 09 декабря 2018

Есть ли у меня какая-либо причина для реализации 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;

и вот 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 |
+-----------+--------------------------------------------------------------------------+---------+

См. int, bigint, smallint, and tinyint

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...