У меня есть таблица модулей, и я хочу применить следующую логику, но я не уверен, что это лучший способ сделать это. Я думал о добавлении триггера обновления и вставки, но у меня возникли проблемы с кодом триггера.
Если 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$$