【问题标题】:SQL Trigger Insert After Modify Value修改值后 SQL 触发器插入
【发布时间】:2015-02-05 19:44:07
【问题描述】:

我希望在新插入时触发以修改值。场景如下。当向表中添加新条目时,如果 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

【问题讨论】:

  • 创建触发器items_after_insert 后插入items 每行开始设置 items.Quality = '100' FROM items WHERE items.ObjectTypeID > '653' AND items.ObjectTypeID

标签: triggers sql-insert


【解决方案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;

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

【讨论】:

    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2013-01-08
    相关资源
    最近更新 更多