2016-05-13 7 views
1

Я думал о внедрении системы регистрации пользователей. Где будет 'пользователи' и 'user_activation' столы.Ошибка внешнего ограничения MySQL при логическом изменении

если мои таблицы выглядят следующим образом: таблица -> поля:

users -> id,username,activated(boolean), etc. 

user_activation -> users_id (foreign key constraint obviously),token, etc. 

Теперь, я могу каскад удалить данные маркеров из «user_activation» если пользователь будет удален из «пользователей» таблица.

мне было интересно, как бы я добиться того же, когда «активирована» логическое значение в таблицы "пользователей будет установлен в «истинный»?

(как только пользователь активирован, токен будет бесполезен, поэтому его следует удалить после активации пользователя).

ответ

1

Я не могу придумать способ сделать это с помощью внешнего ключа, но вы можете использовать триггер:

delimiter // 

CREATE TRIGGER user_activation_tr 
BEFORE UPDATE ON users 
FOR EACH ROW 
BEGIN 
    IF NEW.activated THEN 
     DELETE FROM user_activation WHERE users_id = NEW.id; 
    END IF; 
END;// 

delimiter ; 

 Смежные вопросы

  • Нет связанных вопросов^_^