-2

在数据库中定义表时,我们将列类型设置为int/varchar等,为什么不能设置为自动?

数据库将从输入中识别并自行设置类型,就像 php 处理变量一样。此外,youtube 不必让他们的统计数据计数器崩溃。

4

1 回答 1

0

在某些情况下,您可以(例如 SQL Server 的sql_variant或 Oracle 的ANYDATA)。


这是否是一个好主意是另一回事......

首先,没有显式架构(在数据库中)并不意味着您可以避免隐式架构(由您的客户端应用程序所期望的暗示)。例如,仅仅因为您在数据库中有一个字符串,并不意味着您的应用程序将能够使用它,如果它最初被实现为期望一个数字。这实际上是动态类型与静态类型的争论,静态类型通常被认为是非平凡程序的优越性。

此外,这些“变体”类型通常具有显着的开销,并且从索引和可搜索性的角度来看是有问题。例如,2 是否小于 10?是的,如果这些是数字,则不是,如果它们是字符串!

因此,如果您知道您对数据库的期望(在 99% 的情况下您会这样做),请将其告知数据库,以便它可以为您进行类型检查和优化!

于 2016-10-13T15:34:21.843 回答