У меня есть дилемма, когда мне нужно, чтобы база данных MySQL создала номер клиента на основе первых 3 символов введенного нового имени клиента и добавила возрастающее значение. Например:
Таблица клиентов:
+----+----------------------------------------------+--------------+
| id | clientName | clientNumber |
+----+----------------------------------------------+--------------+
| 1 | Accelerated Learning | ACC00 |
| 2 | Acceleration Systems | ACC01 |
| 3 | Acme,Inc. | ACM00 |
Обычно я делал бы это в форме представления на внешнем интерфейсе, но по необъяснимым причинам спецификация хочет, чтобы это обрабатывалось БД. Я пытаюсь написать что-то вроде этого, но не могу понять это правильно:
Trigger:
CREATE DEFINER = CURRENT_USER TRIGGER `crmdev`.`clients_BEFORE_INSERT` BEFORE INSERT ON `clients` FOR EACH ROW
BEGIN
DECLARE prefix varchar(3);
DECLARE suffix INT(3);
SET prefix = SUBSTRING(NEW.clientName,1,3);
SET suffix = (
SELECT COUNT(*),SUBSTRING(clientName,1,3) = prefix + 1;
SET NEW.clientNumber = CONCAT(prefix,suffix);
END
Заранее спасибо за помощь / руководство!