2013-11-27 5 views
2

Есть ли способ автоматического увеличения записей в таблице MySQL на основе значения другого столбца во вставленной строке? Например, что-то сказать, что это пятая запись для конкретного имени пользователя?MySQL: автоматическое увеличение на основе значения столбца?

Я знаю, что смогу сделать подсчет строк после того, как сделаю свой запрос, но это не то, что я ищу. Я огляделся и просто не мог ничего найти на этом.

Спасибо!

+1

Если вы сделали что-то подобное, это не будет автоматически увеличиваться - в смысле mySQL. – Steve

+1

Вы можете создать триггер ввода для таблицы и добавить туда логику. Но, как сказал Стив, это не будет автоинкремент. – Pepe

+0

@Steve Хорошо, но независимо от семантики это можно сделать? – user3011922

ответ

2

Предполагая, что у вас есть стол Users с 2 колонками, username и counter. Пример кода для случая, о котором вы говорили. Запустите это, чтобы создать триггер. Он должен срабатывать на каждой вставке.

CREATE TRIGGER insert_update BEFORE INSERT ON Users 
FOR EACH ROW 
BEGIN 
    DECLARE name_count INTEGER; 
    SELECT COUNT(*) INTO @name_count FROM Users WHERE username = NEW.username; 
    INSERT INTO Users VALUES (NEW.username, @name_count+1); 
    END 
END 

Отказ от ответственности: это не может быть наиболее эффективным и чистым в мире вещь. Мне было бы интересно, что могут предложить другие люди.

+0

Большое спасибо. В настоящее время я занимаюсь исследованиями триггеров, поэтому я могу понять, что здесь происходит, и по-настоящему оценить ваш ответ. – user3011922

+0

@ user3011922 Удачи! Честно говоря, я не тестировал вышеприведенный пример, но, надеюсь, он должен работать. Я отправляюсь спать, и если у вас есть какие-либо вопросы или если это не срабатывает, я должен послать сообщение, и я отвечу утром. – Pepe

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