Удалить из условия обновления без таблицы mysql

В нем есть таблица 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". Как я могу изменить эту таблицу?

Ответы

Ответ 1

ALTER TABLE `invoices`.`invoices`
    CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

Ответ 2

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

Ответ 3

В вашем случае использования, я думаю, вам лучше будет обслуживаться с DATETIME, например:

ALTER TABLE `my_table`
    CHANGE `my_col` `my_col` DATETIME NOT NULL DEFAULT NOW();

По умолчанию используется значение NOW() для вставки, но при обновлении оно не изменяется.

См. этот вопрос для хорошего объяснения разницы: Должен ли я использовать поле 'datetime' или 'timestamp'?

Ответ 4

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