Можно с помощью триггера.
Для примера возьмем простую таблицу:
CREATE TABLE `test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`some_field` CHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
Нам необходимо, чтоб при попытке вставки значения "NULL", оно заменялось на значение последнего вставленного ранее элемента.
Для данной таблицы триггер будет выглядеть следующим образом:
DELIMITER |
CREATE TRIGGER `set_default_value_from_last_row` BEFORE INSERT ON `test` FOR EACH ROW
BEGIN
IF (NEW.`some_field` IS NULL) THEN
SET NEW.`some_field` = (SELECT `some_field` FROM `test` WHERE `id` = (SELECT MAX(`id`) FROM `test`));
END IF;
END;|