修改值后插入SQL触发器

时间:2015-02-05 19:44:08

标签: triggers sql-insert

我希望在新插入上触发以修改值。方案如下。当添加表的新条目,并且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

1 个答案:

答案 0 :(得分:1)

您可以在触发器上使用关键字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;

现在我认为解决问题很容易。