簡體   English   中英

如何使int列的值必須大於x?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM