我有一个名为 modules 的表,我想强制执行以下逻辑,但我不确定最好的方法。我正在考虑添加更新和插入触发器,但触发器代码有问题。
如果 module_sub_id 大于零,则检查 module_sub_id 是否作为 module_id 存在。如果为零,则将该行视为父记录。
我想要做的想法是有一个父记录,它可以有子记录,而没有另一个表,它们之间有外键关系。
CREATE TABLE `jlimited_test2`.`modules` (
`module_id` int( 11 ) NOT NULL AUTO_INCREMENT
, `module_sub_id` int( 11 ) NOT NULL default '0'
, `module_name` varchar( 100 ) CHARACTER SET utf8 NOT NULL
, `module_active` int( 11 ) NOT NULL
, PRIMARY KEY ( `module_id` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1;
这是我的触发器的代码。
CREATE TRIGGER myTrigger
BEFORE INSERT ON modules
FOR EACH ROW
BEGIN
IF NEW.module_sub_id > 0 THEN
IF NOT (
SELECT count(*)
FROM modules
WHERE module_id = NEW.module_sub_id
) = 1 THEN
INSERT ignore()
END IF;
END IF;
END$$