如何在MySQL中创建需要负值的CHECK约束?

时间:2014-02-13 00:49:43

标签: mysql

我想更改表上的整数列以添加检查约束,以防止值为零或正数。例如:

CREATE TABLE example (id INTEGER)
ALTER TABLE example ADD CONSTRAINT chk_negID CHECK (id<0)

MySQL很高兴遵守这些规则,然后允许以下内容:

INSERT INTO example VALUES (-1);
INSERT INTO example VALUES (1);

我的约束实际上没有被添加吗?有没有办法列出在创建表后添加到表中的约束?

2 个答案:

答案 0 :(得分:3)

mysql不支持 (即使它接受它作为有效语法)

  

CHECK子句被解析但被所有存储引擎忽略

http://dev.mysql.com/doc/refman/5.5/en/create-table.html

答案 1 :(得分:2)

这是可行的,但可能很难调试。这是一个触发器:

DELIMITER $$;
CREATE TRIGGER my_trigger AFTER INSERT ON my_table 
FOR EACH ROW
BEGIN
 IF(OLD.id <= 0)
   THEN
   DELETE FROM my_table where id = OLD.id;
 END IF;
END