Почему я получаю сообщение об ошибке 1054: неизвестный столбец в списке полей для определенных входных данных? - PullRequest
0 голосов
/ 23 октября 2019

Я получаю неизвестную ошибку столбца, хотя поле существует в таблице 'WebsiteRole':

ОШИБКА 1054: Неизвестный столбец 'роль' в 'списке полей'

Теперь, после некоторых исследований, я понимаю, что это может быть из-за триггера, установленного на этой таблице. Я проверил код триггера, и мне все еще не ясно, что не так в его коде.

Что странно, вставка работает для комбинаций ввода, где роль не является «редактором».

Вот таблицы: WebsiteRole enter image description here

Вот мой триггер ввода:

CREATE DEFINER=`vasisht54`@`%` TRIGGER `website_server`.`WebsiteRole_AFTER_INSERT` AFTER INSERT ON `WebsiteRole` FOR EACH ROW
BEGIN
DECLARE var_role varchar(15);
SET var_role = NEW.role;
IF var_role = 'owner' THEN
    INSERT INTO WebsitePriviledge VALUES(NULL, 'create', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'read', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'update', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'delete', NEW.dev_id,NEW.website_id);
ELSEIF var_role = 'admin' THEN
    INSERT INTO WebsitePriviledge VALUES(NULL, 'create', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'read', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'update', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'delete', NEW.dev_id,NEW.website_id);
ELSEIF role = 'writer' THEN
    INSERT INTO WebsitePriviledge VALUES(NULL, 'create', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'read', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'update', NEW.dev_id,NEW.website_id);
ELSEIF var_role = 'editor' THEN
    INSERT INTO WebsitePriviledge VALUES(NULL, 'read', NEW.dev_id,NEW.website_id);
    INSERT INTO WebsitePriviledge VALUES(NULL, 'update', NEW.dev_id,NEW.website_id);
ELSEIF var_role = 'reviewer' THEN
    INSERT INTO WebsitePriviledge VALUES(NULL, 'read', NEW.dev_id,NEW.website_id);
END IF;
END

Вот сообщение об ошибке, которое яполучаю входные данные, где роль «редактор» Error message

Где я иду не так?

1 Ответ

1 голос
/ 23 октября 2019

Обнаружена ошибка!

Переменная, которую я объявил в триггере: var_role . Опечатка в условии if для «писателя», где я записал role в качестве переменной вместо var_role .. ffs

...