CREATE TABLE admins
(
id integer NOT NULL AUTO_INCREMENT,
id_parent integer,
login VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL,
email VARCHAR(50) NOT NULL,
avatar BLOB,
CONSTRAINT pk_admins PRIMARY KEY (id),
CONSTRAINT fk_admins_parent FOREIGN KEY (id_parent)
REFERENCES admins (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT u_login UNIQUE (login),
CONSTRAINT u_email UNIQUE (email)
)
ENGINE=InnoDB DEFAULT CHARSET=cp1251;
DROP TRIGGER IF EXISTS `__tr_del_admin`;
DELIMITER $$
CREATE TRIGGER __tr_del_admin BEFORE DELETE ON admins
FOR EACH ROW BEGIN
UPDATE admins SET id_parent=OLD.id_parent WHERE id_parent=OLD.id;
END $$
DELIMITER ;
собственно в этой таблице не должно быть двух и более записей имеющих id_parent = NULL, тоесть должна быть только одна запись имеющая id_parent равным NULL, но id_parent не NULL может иметь одинаковое значение для нескольких записей.
По сути есть ТОЛЬКО один суперадмин (id_parent = NULL), создающий всех остальных, а те могут создавать следующих.
Удаление суперадмина ведет к удалению всех админов.