小编典典

MySQL中的CHECK约束不起作用

sql

首先,我创建了一个表,例如

CREATE TABLE Customer (
  SD integer CHECK (SD > 0),
  Last_Name varchar (30),
  First_Name varchar(30)
);

然后在该表中插入值

INSERT INTO Customer values ('-2','abc','zz');

MySQL没有显示错误,它接受了值。


阅读 379

收藏
2021-04-18

共1个答案

小编典典

如果您使用MySQL 8.0.15或更早版本,则MySQL参考手册会说:

该CHECK子句已解析,但所有存储引擎均将其忽略。

尝试触发…

mysql> delimiter //
mysql> CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer 
    -> FOR EACH ROW 
    -> BEGIN 
    -> IF NEW.SD<0 THEN 
    -> SET NEW.SD=0; 
    -> END IF; 
    -> END
    -> //
mysql> delimiter ;

希望能有所帮助。

2021-04-18