【问题标题】:Is it bad practice to use MySQL unsigned integers? [closed]使用 MySQL 无符号整数是不好的做法吗? [关闭]
【发布时间】:2014-08-24 15:29:13
【问题描述】:

我需要存储只有正数的整数,并且目前正在使用 MySQL。我将值设置为 UNSIGNED “以防万一” 我曾经有这么多记录,但是,我怀疑我是否会到达那里。

我很好奇不使用 UNSIGNED 标志是否更好,以防我以后希望将数据库更改为不支持无符号整数的 MS SQL 等。

使用 MySQL 无符号整数是否被认为是不好的做法?

【问题讨论】:

  • 这不是坏习惯。其实根本不考虑。如果您需要正数,请使用无符号,否则使用有符号 - 这就是全部内容。如果你有某种奇怪的项目可以换成存储层,并且你正在做像这个这样的超微优化 - 我认为这是一种不好的做法。
  • @N.B.我无意换掉存储层,但我永远不知道未来会怎样,并希望尽可能降低风险。
  • MYSQL 不是 SQL Server
  • @podiluska。我不明白你的评论。当然不是,但它是一个潜在的替代品,不是吗?

标签: mysql sql sql-server


【解决方案1】:

我认为使用适合所存储数据的数据类型并不是一个坏习惯。

您提出了一个很好的关于可移植到其他数据库的问题。如果这是一个问题,那么您应该尝试遵守 ANSI 标准功能或您知道数据库之间相似的功能。

将代码从 MySQL 迁移到 SQL Server 可能需要付出更多的努力,而不仅仅是区分有符号整数和无符号整数。有许多地方功能不同、不存在或行为不同。举几个例子:

  • cast() 在 MySQL 和 SQL Server 中采用不同的类型(as signed vs as int
  • MySQL 在123 + '456b' 的情况下进行静默错误处理,而 SQL Server 会产生错误。
  • 两个数据库的字符串连接运算符不同。
  • datediff() 在两个数据库中采用不同的参数

因此,signedunsigned 之间的差异将是转换中的一个小问题。如果您计划进行此类更改,则需要仔细编写代码。

【讨论】:

  • 谢谢戈登。反响很大。我无意交换数据库,如果我这样做了,我会担心的。
猜你喜欢
  • 2015-01-22
  • 2016-08-18
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2013-06-23
相关资源
最近更新 更多