mysql check约束
时间: 2023-10-26 11:07:53 浏览: 79
SQL 的约束
MySQL不支持CHECK约束,但可以通过触发器来实现类似的约束功能。
例如,可以在表上创建一个BEFORE INSERT触发器,在插入新行之前检查特定列的值是否满足所需的条件。如果不满足条件,则触发器会抛出一个错误,阻止新行的插入。
以下是一个示例触发器,用于在插入新行时检查"age"列是否大于等于18:
DELIMITER $$
CREATE TRIGGER age_check
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
IF NEW.age < 18 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Age must be greater than or equal to 18';
END IF;
END$$
DELIMITER ;
请注意,触发器可以在INSERT、UPDATE和DELETE操作之前、之后或之间执行,因此可以使用它们来实现更复杂的约束逻辑。
阅读全文