MySQL-防止行引用自身

我有一个具有以下结构的表类别:

----------------------------------
| id (PK) | name | parentId (FK) |
----------------------------------

其中parentId可以引用同一表中的一行.

我想防止一行被更新,以便它引用自身(parentId!= id).我知道我必须使用数据库触发器,但是我不知道它的外观.我该怎么做?

我知道我可以(也将)在应用程序逻辑中处理此问题,但我认为这不是仅在应用程序逻辑中处理此类事情的好习惯.

我也想防止对插入和更新的循环引用,但是我想这是一个不同的问题.

最佳答案
使用检查约束会更容易:

ALTER TABLE categories 
ADD CONSTRAINT categories_no_self_ref_ck CHECK (id != parentid)

转载注明原文:MySQL-防止行引用自身 - 代码日志