mysql - 使用 SQL 触发器设置类别嵌套路径

标签 mysql sql database-trigger

我想为每个插入的类别生成嵌套类别路径。

类别结构:

id
parent_id
name

我的触发器 - BEFORE -> INSERT

SET NEW.path = CONCAT(IFNULL((select path from categories where id = NEW.parent_id), '0'), '.', New.id)

NEW.id返回0?

我不知道我做错了什么。

最佳答案

在 BEFORE 触发器中,NEW.id 尚未设置(假设它是自动增量)。

在 AFTER 触发器中,更改 NEW.path 为时已晚。

您不能为此使用触发器。您必须让 INSERT 完成,然后执行 UPDATE 来更改路径。

关于mysql - 使用 SQL 触发器设置类别嵌套路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58269938/

相关文章:

php - 在非对象错误上调用成员函数bind_param(),但 SQL 可以工作

mysql - 需要帮助优化具有 100K+ 行的表的基本连接操作

django - 使用迁移运行的 pytest-django 忽略数据库触发器

SQL:编写一个触发器,如果​​ Person 已经拥有一个 Store,则停止插入一行

mysql - 如何规范mysql数据库表

mysql - 如何提取MySQL中的存储过程和函数?

mysql - 将查询 SQL 转换为 PostgreSQL

mysql - 具有逻辑错误条件的插入阻止触发器

java - Play Framework 2.2 空指针异常ArrayList

mysql - 优化 XML 数据提要的 MySQL 插入