6

Is there any way to set the default value for a column as an expire date (some hours from CURRENT_TIMESTAMP)?

I have already tried:

ALTER TABLE `table` 
ADD COLUMN `expire` TIMESTAMP NOT NULL DEFAULT TIMESTAMPADD(HOUR, 5, CURRENT_TIMESTAMP);

But didn't work..

Victor
  • 8,309
  • 14
  • 80
  • 129
  • 2
    `TIMESTAMP` and `DATETIME` columns can default to `CURRENT_TIMESTAMP`, but not to a value calculated by a function. Best bet is a trigger as in Ike's example. – Mike S. Mar 15 '12 at 14:34

1 Answers1

7

You can't implement a complex default value like that in the table definition.

You can do it with a trigger if you want:

DELIMITER $$

DROP TRIGGER IF EXISTS tr_b_ins_table $$

CREATE TRIGGER tr_b_ins_table BEFORE INSERT ON table FOR EACH ROW BEGIN
  SET NEW.expire = NOW() + INTERVAL 5 HOUR;
END $$

DELIMITER ;
Ike Walker
  • 64,401
  • 14
  • 110
  • 109