Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何处理MS SQL中不支持的无符号整数字段类型?_Mysql_Sql Server_Database_Interop - Fatal编程技术网

Mysql 如何处理MS SQL中不支持的无符号整数字段类型?

Mysql 如何处理MS SQL中不支持的无符号整数字段类型?,mysql,sql-server,database,interop,Mysql,Sql Server,Database,Interop,为了使基于MySQL的应用程序支持MS SQL,我遇到了以下问题: 我将MySQL的auto_increment保留为无符号整数字段(各种大小),以充分利用整个范围,因为我知道永远不会有负值。MS SQL不支持所有整数类型的unsigned属性,因此我必须在放弃一半的值范围或创建一些变通方法之间进行选择 一种非常简单的方法是将一些代码放在数据库抽象代码或存储过程中,该存储过程在db端的负值和无符号范围较大部分的值之间进行转换。这当然会搞乱排序,而且它也不能与自动id功能一起工作(或者以某种方式)

为了使基于MySQL的应用程序支持MS SQL,我遇到了以下问题:

我将MySQL的auto_increment保留为无符号整数字段(各种大小),以充分利用整个范围,因为我知道永远不会有负值。MS SQL不支持所有整数类型的unsigned属性,因此我必须在放弃一半的值范围或创建一些变通方法之间进行选择

一种非常简单的方法是将一些代码放在数据库抽象代码或存储过程中,该存储过程在db端的负值和无符号范围较大部分的值之间进行转换。这当然会搞乱排序,而且它也不能与自动id功能一起工作(或者以某种方式)

我现在想不出一个好的解决办法,有吗?还是我只是一个狂热的人,应该忘记一半的射程

编辑:
@迈克·伍德豪斯:是的,我想你是对的。我脑子里仍然有一个声音在说,如果我优化它的利用率,也许我可以缩小这个领域的规模。但是,如果没有简单的方法可以做到这一点,可能就不值得担心了。

我想说。。“我们通常如何处理组件之间的差异?”

封装变化的内容


您需要在数据访问层中创建一个抽象层,以使其不关心数据库是MySQL还是MS SQL。

什么时候问题可能成为真正的问题

考虑到当前的增长率,您预计MS SQL版本中的有符号整数溢出会多久发生

要悲观

您希望该应用程序使用多长时间

你还认为2的差异因素是你应该担心的吗


(我不知道答案是什么,但我认为在搜索更难的解决方案之前,我们应该确定我们确实存在问题)

我建议使用BIGINT数据类型,因为它的最大值为9223372036854775807

SQL Server不支持有符号和无符号值