Мне нужно создать столбец псевдо-ключа в таблице MySQL, который определяется как первая часть поля point_title (вплоть до пробела, если таковая имеется), объединенного с идентификатором записи.
Пример данных:
id point_title pseudo_key
_____________________________________
123 Scott R. scott123
124 John R. john124
125 Stacey J. stacey125
126 Ted ted126
Чтобы сделать это, я создаю триггерную программу, которая автоматически заполнит это поле после обновления/вставки:
DROP TRIGGER IF EXISTS `point_name_update`//
CREATE TRIGGER `point_name_update`
BEFORE UPDATE ON `map-points`
FOR EACH ROW BEGIN
SET NEW.point_name = concat(trim(lower(SUBSTRING(NEW.point_title,1,INSTR(NEW.point_title, ' ')))),NEW.id);
END
//
Однако я не могу понять, как обрабатывать случай, когда у Теда нет места в поле point_title. Значение pseudo_key для этой записи равно "126".
У кого-нибудь есть идея для этого?
Спасибо, Скотт
Существует несколько способов скинуть этот кот, и я обнаружил, что вместо него можно использовать SUBSTRING_INDEX():
ДРОПА ТРИГГЕР, ЕСЛИ СУЩЕСТВУЕТ point_name_update
//
CREATE TRIGGER point_name_update
ПЕРЕД ОБНОВЛЕНИЕМ map-points
ДЛЯ КАЖДОЙ РОБОЙ SET NEW.point_name = concat (SUBSTRING_INDEX (LOWER (TRIM (NEW.point_title)), '', 1), NEW.id); END