[英]How can I specify the range of values for the user to enter from in phpmyadmin?
我的问题是我有一个名为Autodb的数据库,它在phpmyadmin中有一个名为Bluetooth的表,在其中必须创建一个名为LAP的列。 在此列中,用户应输入0X9E8B00-0X9E8B3F之间的任何值,是否可以在phpmyadmin中进行操作,是否可以在SQL中进行查询以设置要输入的值范围?
我不能100%确定您的要求,但这可能会有所帮助:
如果要设置每个值,用户可以输入,则可以使用ENUM
数据类型。
在这里看看ENUM
CREATE TABLE Bluetooth
(
ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
BlahBlah VARCHAR(50) NOT NULL,
LAP ENUM('0X9E8B00', '0X9E8B3F', '0X9E8B3F') NOT NULL
)
如果范围在2个数字之间,则可以使用约束和CHECK
ALTER TABLE myTableName
ADD CONSTRAINT myTableName_myColumnName_valZeroToOneHundred
CHECK (myColumnName BETWEEN 0 AND 100)
ALTER TABLE Table
ADD CONSTRAINT CK_Table_Column_Range CHECK (
Column >= 0 AND Column <= 100 --Inclusive
)
检查这个问题 。
如果只想在范围之间插入数据:
INSERT INTO Bluetooth (ID, BLAHBLAH, LAP)
SELECT (1, 'BlahBlah', 0x9e8f21) WHERE
IF (0x9e8f21 >= 0x9e8b00 and 0x9e8f21 <= 0x9e8b3f, 1, 0) = 1
phpMyAdmin是管理员用于管理MySQL数据库的工具,而不是最终用户的前端,因此这超出了phpMyAdmin可以处理的范围。
基本上,在验证插入数据时,您有三个选择:
在您的前端(似乎是基于所使用标签的PHP)中,请先检查该值,然后再将其传递给MySQL。 您应该能够对这些值进行标准的十六进制比较,如果超出设置范围,则将显示错误消息。
MySQL允许您设置一个触发器,该触发器可以在INSERT发生之前检查数据。 触发器是在诸如INSERT,UPDATE或DELETE之类的事件之前(或之后)运行的命令或测试-您可能希望在INSERT或DELETE之后发生相同的触发器动作。 如果该值超出范围,则可以向客户端返回错误消息。 MySQL应该能够比较十六进制值。
代替直接调用INSERT命令,您可以调用存储过程。 这样做的好处是,无论使用哪种前端,都可以为要执行的所有INSERT一次编写一次。 他们都将使用存储过程。 如果更改界限,则将在存储过程中而不是在应用程序代码中进行更改,如果您有多个部署或应用程序正在访问数据,那么这很好。 同样,MySQL应该能够处理十六进制值。
选择哪种选项取决于您的部署和经验水平,但是在所有这些情况下,您都可以实现所要进行的检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.