2013-05-03 3 views
0

У меня есть таблица, которые выглядят так:Trigger вставки на том же столе

table t1 (
id INT autoincremente, 
numero VARCHAR 
) 

Мне нужно установить значение Numero = префикс + идентификатор, когда есть вставка.

Так я судимый к этому с помощью триггера:

CREATE TRIGGER `mySweetTrigger` 
AFTER INSERT ON `t1` 
FOR EACH ROW 
BEGIN 
    SET NEW.numero = CONCAT('prefix', NEW.id); 
END 

Но не могу заставить его работать ...

Заранее спасибо за вашу помощь.

+1

Просто на сиденеде. Почему вы хотите, чтобы столбец был идентичен вашему id, только с префиксом. Почему бы не получить это с помощью SELECT id, CONCAT ('prefix', id) AS numero FROM ... 'при выборе или при использовании префиксов только сохранить префикс и concat при доступе к данным – nvanesch

ответ

1

Триггер после вставки не имеет права изменять собственные данные. Перед вставкой не доступно значение автоматического увеличения. Так что это выглядит как проблема.

К счастью, вы можете получить доступ к значению автоматического прироста из схемы.

CREATE TRIGGER `mySweetTrigger` 
BEFORE INSERT ON `t1` 
FOR EACH ROW 
BEGIN 
    SET NEW.numero = CONCAT('prefix', 
     (
     SELECT 
      AUTO_INCREMENT 
     FROM information_schema.TABLES 
     WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1' 
    )); 
END 
+1

Спасибо, он отлично работает с 1 line insert. Однако, когда я вставляю несколько строк, значение AUTO_INCREMENT неверно ... – user1386869