Mysql 使用类似触发器的断言
我知道在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
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语句的注释,您将看到它不允许您插入它