0

有点类似于类的静态变量。

例如,假设我有一张桌子来留人。然后对于每一行,我有一堆列:年龄、性别、姓名......但我想要一个与表本身相关联的值,比如说minimum allowed age = 18。然后,每当我添加一个新人时,我都会检查他们的年龄是否大于Table.minimum_allowed_age. 这样我就可以轻松地更改该值,而无需在任何地方进行硬编码。

我现在能做到的唯一方法是创建一个(非常丑陋的)ENUM 列,它只有一个选项,18然后每一行都有它。这显然不是这样做的方法,尤其是如果您想经常更改该值(在我的应用程序中就是这种情况)。

4

3 回答 3

2

并不真地。一些数据库服务器允许您将一些元数据附加到表中(例如,AUTO_INCREMENTMySQL 中的值,或COMMENT各种 SQL 数据库中的字段),但它们不适合通用数据存储。

在您的情况下,您所描述的值(允许的最小年龄)根本不是表的属性 - 它是您的应用程序逻辑的属性。如果它要长期保持不变,请将其写为代码中的常量;如果它会更频繁地更改,请创建一个单独的表来存储整个应用程序的配置键/值对。

于 2012-08-29T20:00:54.097 回答
1

静态变量在技术上是全局变量。使用另一个表来存储全局属性怎么样?

主键的字符串,另一个用于CAST获取值的嵌套查询中的整数的字符串将起作用。

NULL如果你想要类型安全,你也可以使用一个整数值,或者如果你想要类型安全,你可以使用几个不同类型的可能列(你可以COALESCE将结果CAST转换为一个字符串以获得完全通用的字符串->字符串视图)。

对于与表相关联的全局变量,您可以建立适当的约定,例如在键前面加上表名和一些分隔符。

于 2012-08-30T08:44:50.943 回答
0

您可以尝试编写插入触发器。在触发代码中,您可以检查最小年龄是否为 18 岁,如果不是,您可以将其设置为 18 岁。

于 2012-08-29T20:23:03.637 回答