SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.12.2012 14:23:11

Sanprof
Участник
Зарегистрирован: 26.12.2012
Сообщений: 1

Помогите с CONSTRAINT

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), создающий всех остальных, а те могут создавать следующих.
Удаление суперадмина ведет к удалению всех админов.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson