Ответ 1
ALTER TABLE `invoices`.`invoices`
CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
В нем есть таблица mysql и записи данных:
CREATE TABLE `invoices`.`invoices` (
`InvoiceID` bigint(20) unsigned NOT NULL auto_increment,
`UserID` int(10) unsigned NOT NULL,
`Value` decimal(10,3) NOT NULL,
`Description` varchar(4048) NOT NULL,
`DateTime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`InvoiceID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin5;
Я хочу удалить условие "on update CURRENT_TIMESTAMP". Как я могу изменить эту таблицу?
ALTER TABLE `invoices`.`invoices`
CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
aularon ans не удалит условие on update
Его можно удалить, используя следующие две команды:
ALTER TABLE `invoices`.`invoices`
CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT 0;
ALTER TABLE `invoices`.`invoices`
CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Примечание. Это будет работать только в MySQL, а не на SQL Server
В вашем случае использования, я думаю, вам лучше будет обслуживаться с DATETIME
, например:
ALTER TABLE `my_table`
CHANGE `my_col` `my_col` DATETIME NOT NULL DEFAULT NOW();
По умолчанию используется значение NOW()
для вставки, но при обновлении оно не изменяется.
См. этот вопрос для хорошего объяснения разницы: Должен ли я использовать поле 'datetime' или 'timestamp'?
ALTER TABLE `invoices` CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'
или
ALTER TABLE `invoices` CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP