如何在SQLite/MySQL中限制列值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (75)

我想在SQL表中限制列值。例如,列值只能是“car”或“脚踏车”或“van”。我的问题是如何在SQL中实现这一点,在DB端这样做是个好主意,还是应该让应用程序限制输入。

我还打算在未来增加或消除更多的价值,例如“卡车”。

我使用的数据库类型是SQLite和MySQL。

提问于
用户回答回答于

添加一个包含这些传输方式的新表,并使列成为该表的外键。将来可以将新的传输方式添加到表中,并且列定义保持不变。

有了这个构造,我将最终选择在DB级别而不是在应用程序级别来规范这一点。

用户回答回答于

对于MySQL,可以使用ENUM数据类型。

column_name ENUM('small', 'medium', 'large')

MySQL引用:ENUM类型

为了增加这一点,我发现最好还是限制在DB端在应用程序端。一个Enum再加上一个选择箱你就被覆盖了。

扫码关注云+社区