根据this documentation,Oracle建议将public
列映射到NUMBER(5, 0)
。但是我意识到Int16
的范围是Int16
,但是-32,768 to +32,767
的范围是NUMBER(5, 0)
。那么在这种情况下使用-99999 to 99999
真的是最佳实践吗?
我知道,如果我所有的数据都通过.NET代码流入数据库,那么我将把该列有效地限制为Int16
,应该没有问题,但是如果插入另一个应用程序该怎么办?在此列中输入Int16
的值,然后我读取并中断了我的应用程序,因为它不适合99999
?我只是在寻找最佳做法/建议,谢谢。
我已经研究过Which .NET data type is best for mapping the NUMBER Oracle data type in NHibernate?,它涉及整个Int16
数据类型,但是我想问一个NUMBER
数据类型。
答案 0 :(得分:1)
您可以使用检查约束来验证number(5,0)
的列是否适合int16
的边界。
alter table your_table add constraint your_col_int16_ck
check ( your_col >= -32768 and your_col <= 32767 )
这将验证来自您应用程序的数据,并保护您免受他人通过其他媒介针对您的表格发布DML的攻击。</ p>