[英]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.