MYSqli更新最后一行

时间:2016-12-14 08:53:13

标签: mysql sql triggers

我试图在我在

中插入一行后在mysqli中设置一个触发器
    tblallocation

       (AllocID,
        AssetID,
        AssetName ,
        AssetModel,
        Custody,
        Location,
        Discontinued,
        DiscDate    
        DateAlloc,
        ReturnStockDate)

触发器更新tblassets并设置allocated= true

   (assetID,
    Asset,
    Brand,
    Model,
    Serial,
    AssetCondition,
    description,
    Location,
Allocated)

我正在按如下方式编写触发器,它不起作用:

CREATE TRIGGER `change to allocated` AFTER INSERT ON `tblallocation`
  FOR EACH ROW update tblassets SET allocated=1  
  where tblassets.AssetID =tblallocation.MAX(AssetID)

2 个答案:

答案 0 :(得分:0)

如果在此期间不可能再进行插入,则可以继续使用MYSQL提供的LAST_INSERT_ID()函数来获取最后插入行的唯一ID。 (有关更多参考,请查看http://dev.mysql.com/doc/refman/5.7/en/getting-unique-id.html

但是,如果这不适合您,那么您可以使用子查询而不是tblallocation.MAX(AssetID)。

子查询应该类似于

SELECT AssetID from tblallocation order by AssetID desc LIMIT 1;

希望这有帮助。

答案 1 :(得分:0)

谢谢大家,我找到了解决方案。

DROP TRIGGER IF EXISTS change to allocated;创建DEFINER = root @ localhost TRIGGER change to allocated插入tblallocation后每行更新tblassets SET allocated = 1其中tblassets.assetID = new.assetid