.NET Int16 ограничивает пределы NUMBER (5, 0) в Oracle - PullRequest
0 голосов
/ 19 декабря 2018

Согласно этой документации , Oracle предлагает сопоставить столбец NUMBER(5, 0) с Int16.Однако я понял, что у Int16 есть диапазон -32,768 to +32,767, а у NUMBER(5, 0) есть диапазон -99999 to 99999.Так действительно ли лучше использовать Int16 в этом сценарии?

Я понимаю, что если все мои данные поступают в базу данных через мой код .NET, тогда я фактически ограничиваю столбец Int16и не должно быть никаких проблем, но что, если есть другое приложение, которое вставляет значение 99999 в этот столбец, которое я затем читаю и ломаю свое приложение, потому что оно не соответствует Int16?Я просто ищу лучшие практики / предложения, спасибо.

Я уже посмотрел на Какой тип данных .NET лучше всего подходит для сопоставления типа данных NUMBER Oracle в NHibernate? , которыйв отношении целого типа данных NUMBER, но я спрашиваю относительно типа данных NUMBER(5, 0).

1 Ответ

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

Вы можете использовать проверочное ограничение для проверки соответствия столбцов number(5,0) в пределах int16.

 alter table your_table add constraint your_col_int16_ck 
     check ( your_col >= -32768 and your_col <= 32767 )

. Это позволит проверить данные, поступающие из вашего приложения, и защитит вас от людей, выпускающих DML.к вашей таблице и через другие векторы.

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