我想创建一个触发器,以便控制负值。
起初我试过......
CREATE TRIGGER POS_PROD
BEFORE INSERT
ON PRODUCTS
FOR EACH ROW
BEGIN
IF stock <0 OR price <0
THEN
RESIGNAL SET MESSAGE_TEXT = 'Please insert a positive value';
END IF;
END
问题是,一旦我尝试插入值,我就会收到错误告诉我&#34; Price是一个未知字段&#34;。然后我决定试试这个......
CREATE TRIGGER POS_PROD
AFTER INSERT
ON PRODUCTS
FOR EACH ROW
BEGIN
IF stock <0 OR price <0
THEN
RESIGNAL SET MESSAGE_TEXT = 'Please insert a positive value';
ROLLBACK;
END IF;
END
但是我收到了这个错误...在存储的函数或触发器中不允许显式或隐式提交。&#34;
非常感谢你。
答案 0 :(得分:0)
试试这个
CREATE TRIGGER POS_PROD
BEFORE INSERT
ON PRODUCTS
FOR EACH ROW
BEGIN
IF NEW.stock <0 OR NEW.price <0
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Please insert a positive value';
END IF;
END;
INSERT INTO PRODUCTS values (10,20);
INSERT INTO PRODUCTS values (10,-20);
你必须使用NEW来引用来自INSERT语句的值。