Mar*_*aro 20 mysql sqlite restriction
我想限制SQL表中的列值.例如,列值只能是"car"或"bike"或"van".我的问题是你如何在SQL中实现这一点,并且在数据库方面这样做是一个好主意,或者我应该让应用程序限制输入.
我还打算将来添加或删除更多值,例如"truck"
我使用的数据库类型是SQLite和MySQl
NGL*_*GLN 33
添加包含这些传输方式的新表,并使列成为该表的外键.将来可以在表中添加新的传输方式,并且列定义保持不变.
有了这种结构,我肯定会选择在数据库级别而不是应用程序级别对此进行管理.
nag*_*eeb 23
对于MySQL,您可以使用ENUM数据类型.
column_name ENUM('small','medium','large')
除此之外,我发现限制数据库端和应用程序端更好.Enum加上一个Select框,你就被覆盖了.
是的,建议添加检查约束.检查约束用于确保数据库中数据的有效性并提供数据完整性.如果在数据库级别使用它们,则使用该数据库的应用程序将无法添加无效数据或修改有效数据,因此即使应用程序本身接受无效数据,数据也将无效.
在SQLite中:
create table MyTable
(
name string check(name = "car" or name = "bike" or name = "van")
);
Run Code Online (Sandbox Code Playgroud)
在MySQL中:
create table MyTable
(
name ENUM('car', 'bike', 'van')
);
Run Code Online (Sandbox Code Playgroud)
您将使用检查约束。在SQL Server中,它的工作方式如下
ALTER TABLE Vehicles
ADD CONSTRAINT chkVehicleType CHECK (VehicleType in ('car','bike','van'));
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是ANSI标准,但可以确定MySQL具有类似的构造。
归档时间: |
|
查看次数: |
27320 次 |
最近记录: |