SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 02.02.2015 19:47:50

Sorny
Участник
Зарегистрирован: 02.02.2015
Сообщений: 2

Триггеры.

Здравствуйте.

Не думал, что придется, но тем не менее прошу помощи.
Есть 3 таблицы в БД.

describe user;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| user_id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| username     | varchar(255) | YES  | UNI | NULL    |                |
| email        | varchar(255) | YES  | UNI | NULL    |                |
| display_name | varchar(50)  | YES  |     | NULL    |                |
| password     | varchar(128) | NO   |     | NULL    |                |
| state        | smallint(6)  | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

describe user_role;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| role_id    | varchar(255) | NO   | UNI | NULL    |                |
| is_default | tinyint(1)   | NO   |     | 0       |                |
| parent_id  | int(11)      | YES  | MUL | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

describe user_role_linker;
+---------+------------------+------+-----+---------+-------+
| Field   | Type             | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| user_id | int(11) unsigned | NO   | PRI | NULL    |       |
| role_id | varchar(11)      | NO   | PRI | 1       |       |
+---------+------------------+------+-----+---------+-------+

При работе скрипта регистрации - пользователь добавляется в таблицу user.
Нужно чтоб при добавлении пользователя в user ему присваивалось значение в
таблице user_role_linker равному 2. Можно так сделать?

Неактивен

 

#2 02.02.2015 20:36:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Триггеры.

Можно,


delimiter //
create trigger user_ai after insert on `user` for each row begin
insert into ser_role_linker (user_id,role_id) values(new.user_id,2); end//


но не нужно. Лучше будет делать добавление в исходные таблицы через процедуру, которая будет добавлять сразу и во вторую таблицу.
С триггером возможна ситуация, что в первую таблицу добавилась запись, а потом сбой и во вторую запись не добавилась.

Неактивен

 

#3 02.02.2015 20:42:38

Sorny
Участник
Зарегистрирован: 02.02.2015
Сообщений: 2

Re: Триггеры.

vasya написал:

Можно

Большое спасибо за ответ. Да уж пару дней ковыряю ZendFramework2 с ZfcUser, ZfcBase, BjyAuthorize.
Последний или первый не ставит роли пользователям. Мозгофф уже. Думал триггерами будет проще сделать.

Неактивен

 

Board footer

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