我知道在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,你不能用“现金”支付。如果没有断言,我怎么能这样做呢?我正在考虑触发......感谢所有
答案 0 :(得分:0)
尝试
CREATE TRIGGER tg_prenotazione_before_insert
BEFORE INSERT ON prenotazione
FOR EACH ROW
SET NEW.soggiorno = IF((SELECT price
FROM soggiorno
WHERE idSoggiorno = NEW.soggiorno) > 1500
AND NEW.paymentType = 'Cash', NULL, NEW.soggiorno);
它检查您所需的条件是什么(如果价格> 1500且paymentType为'Cash'),如果匹配,则会违反NOT NULL
约束,从而有效阻止插入行。
这是 SQLFiddle 演示。 尝试取消注释演示中的最后一个插入语句,你会发现它不允许你插入它。