SQL修改值后触发插入
SQL Trigger Insert After Modify Value
我希望在新插入时触发以修改值。场景如下。添加 table 的新条目时,如果 ObjectTypeID 介于 684 和 750 之间,则将质量值更新为 100。根据我目前所读的内容,我认为这应该在插入之后完成,但是我对 SQL 和学习还很陌生。到目前为止我一直无法让它工作。
这是我目前的尝试:
CREATE TRIGGER `items_after_insert` AFTER INSERT ON `items` FOR EACH ROW
BEGIN
SET items.Quality = '100'
FROM items
WHERE items.ObjectTypeID > '653' AND items.ObjectTypeID < '751'
END
已使用以下建议解决:
CREATE TRIGGER `items_before_insert` BEFORE INSERT ON `items` FOR EACH ROW BEGIN
IF NEW.ObjectTypeID > '653' AND NEW.ObjectTypeID <'751' THEN
SET NEW.Quality = '100';
END IF;
END
您可以在触发器上使用关键字 NEW 和 OLD 来引用插入的寄存器和更新的寄存器。
看看这个来自 MySQL documentation 的例子:
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
SET NEW.amount = 0;
ELSEIF NEW.amount > 100 THEN
SET NEW.amount = 100;
END IF;
END;
现在我觉得解决你的问题很容易了。
我希望在新插入时触发以修改值。场景如下。添加 table 的新条目时,如果 ObjectTypeID 介于 684 和 750 之间,则将质量值更新为 100。根据我目前所读的内容,我认为这应该在插入之后完成,但是我对 SQL 和学习还很陌生。到目前为止我一直无法让它工作。
这是我目前的尝试:
CREATE TRIGGER `items_after_insert` AFTER INSERT ON `items` FOR EACH ROW
BEGIN
SET items.Quality = '100'
FROM items
WHERE items.ObjectTypeID > '653' AND items.ObjectTypeID < '751'
END
已使用以下建议解决:
CREATE TRIGGER `items_before_insert` BEFORE INSERT ON `items` FOR EACH ROW BEGIN
IF NEW.ObjectTypeID > '653' AND NEW.ObjectTypeID <'751' THEN
SET NEW.Quality = '100';
END IF;
END
您可以在触发器上使用关键字 NEW 和 OLD 来引用插入的寄存器和更新的寄存器。
看看这个来自 MySQL documentation 的例子:
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
SET NEW.amount = 0;
ELSEIF NEW.amount > 100 THEN
SET NEW.amount = 100;
END IF;
END;
现在我觉得解决你的问题很容易了。