Вычисляемые столбцы в MySQL на операторах INSERT - PullRequest
2 голосов
/ 05 сентября 2008

Допустим, я хочу иметь таблицу, в которой будут записываться дата и количество столбцов в какой-то другой таблице (или на самом деле любой математический / строковый конкат, и т.д.).

CREATE TABLE `log` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`date` DATETIME NOT NULL ,
`count` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);

Можно ли рассчитывать для меня столбец подсчета всякий раз, когда я делаю вставку?

например. сделать что-то вроде:

INSERT INTO log (date='foo');

и рассчитать по mysql.

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

Ответы [ 3 ]

6 голосов
/ 14 сентября 2008

Триггеры - лучший инструмент для аннотирования данных, когда таблица изменяется путем вставки, обновления или удаления.

Чтобы автоматически установить столбец даты новой строки в журнале с текущей датой, вы должны создать триггер, который будет выглядеть примерно так:

create trigger log_date before insert on log 
for each row begin
   set new.date = current_date()
end;
0 голосов
/ 25 апреля 2013

Почему бы вам не использовать information_schema.TABLES?

0 голосов
/ 05 сентября 2008

Вы определенно должны заявить, что вставить. Это должно быть возможно с помощью оператора INSERT ... SELECT .

INSERT INTO log (date, count)
    SELECT DATE() as date, count(id) as count
    from foo;

Который должен вставить новую строку в таблицу журнала, содержащую сегодняшнюю дату и количество строк в таблице foo. (Предполагая, что в таблице foo есть столбец id. Используйте первичный ключ или другой индексированный столбец)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...