2013-05-12 2 views
0

Я пытаюсь создать триггер для генерации уникального идентификатора с использованием первых двух символов имени лица и первых трех символов их фамилии. Это ошибка, я в настоящее время работает через:Триггер уникального идентификатора пользователя MySQL с использованием конкатенированных столбцов подстроки

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@firstID varchar(2), DECLARE @lastID varchar (3), DECLARE @newID varchar (5); ' at line 3 

Я также не думаю, что я могу просто добавить две строки() переменные, используя только «+», но CONCAT не работает либо. Пожалуйста помоги!

DELIMITER @@ 
CREATE TRIGGER EID BEFORE INSERT ON edrstaff FOR EACH ROW 
BEGIN 
DECLARE @firstID varchar(2), 
DECLARE @lastID varchar (3), 
DECLARE @newID varchar (5); 

SET @firstID = (
SELECT SUBSTRING(fname, FROM 1 FOR 2)) 
FROM edrstaff 
WHERE fname = new.fname) 

SET @lastID = (SELECT SUBSTRING(lname, FROM 1 FOR 3)) 

FROM edrstaff 
WHERE lname = new.lname); 

SET @newID = @firstID + @lastID; 

END @@ 

ответ

0

Попробуйте

CREATE TRIGGER EID 
BEFORE INSERT ON edrstaff 
FOR EACH ROW 
    SET NEW.id = CONCAT(LEFT(NEW.fname, 2), LEFT(NEW.lname, 3)); 

SQLFiddle

+0

Спасибо за ваш ответ! но я получил эту ошибку # 1054 - Неизвестный столбец 'lname' в 'NEW' – Louisa

+0

Добро пожаловать. Пожалуйста, разместите таблицу 'edrstaff' (предпочтительнее в форме оператора' CREATE TABLE') и оператора 'INSERT', который вызвал эту ошибку. – peterm

+0

@ Louisa Вам нужна дополнительная помощь по вашему вопросу? – peterm

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