Mysql 使用类似触发器的断言

Mysql 使用类似触发器的断言,mysql,triggers,Mysql,Triggers,我知道在MySQL中我们不能使用断言。我有这些桌子: CREATE TABLE `soggiorno` ( `idSoggiorno` varchar(16) NOT NULL, `price` int(11) NOT NULL, PRIMARY KEY (`idSoggiorno`)) CREATE TABLE `prenotazione` ( `idPrenotazione` varchar(16) NOT NULL, `soggiorno` varchar(1

我知道在MySQL中我们不能使用断言。我有这些桌子:

CREATE TABLE `soggiorno` (  
`idSoggiorno` varchar(16) NOT NULL,  
`price` int(11) NOT NULL,  
 PRIMARY KEY (`idSoggiorno`))  

 CREATE TABLE `prenotazione` (  
`idPrenotazione` varchar(16) NOT NULL,  
`soggiorno` varchar(16) NOT NULL,  
`paymentType` varchar(45) NOT NULL,    
 PRIMARY KEY (`idPrenotazione`))    
 CONSTRAINT `guest_ibfk_1` FOREIGN KEY (`soggiorno`) REFERENCES `soggiorno` (`idSoggiorno`)
我必须保证,如果价格超过1500英镑,你不能用现金支付。没有断言,我怎么能做到这一点?我正在考虑一个触发器…多亏了大家的努力

在插入之前创建触发器tg\u prenotazione\u 在插入prenotazione之前 每行 设置NEW.soggiorno=IFSELECT price 来自索吉奥尔诺 其中idSoggiorno=NEW.soggiorno>1500 和NEW.paymentType='Cash',NULL,NEW.soggiorno; 如果price>1500且paymentType为“Cash”,它会检查您想要的条件,如果匹配,它会违反NOTNULL约束,从而有效阻止插入行

这里是演示。尝试取消对演示中最后一条insert语句的注释,您将看到它不允许您插入它