[英]How to make an int column that must have value greater than x?
好吧,基本上是標題。
我需要用很少的列創建新表(這很簡單),但是其中之一需要確保輸入的值大於21(這很困難)。 我怎樣才能做到這一點?
CREATE TABLE myBD.myTable
(`name` VARCHAR(90),
`age` INT --here I need to make sure it's above 21>,
PRIMARY KEY (`name`));
設置觸發器以拒絕任何不遵守約束的值 。 實際上有兩個:一個用於插入,另一個用於更新。
例如:
DELIMITER $$
CREATE TRIGGER insert_check_greater_than_21
BEFORE INSERT ON tableName FOR EACH ROW
BEGIN
IF NEW.fieldName <= 21
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'fieldName must be greater than 21';
END IF;
END;
$$
CREATE TRIGGER update_check_greater_than_21
BEFORE UPDATE ON tableName FOR EACH ROW
BEGIN
IF NEW.fieldName <= 21
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'fieldName must be greater than 21';
END IF;
END;
$$
這可能不是定義觸發器的最優雅的方法,但是您可以在自己喜歡的MySQL參考中閱讀有關它們的更多信息。
MySQL確實具有所謂的“檢查約束”的語法, 但目前忽略它們 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.