2016-11-09 25 views
0

は、私はそれが私のデフォルト値を使用することを期待して、開始日と終了日する場合はnullを渡して、私は挿入を実行するNULL可能タイムスタンプフィールド(終了日)タイムスタンプ列のデフォルトの定数値を設定するにはどうすればよいですか?

CREATE TABLE `fee` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `type` varchar(50) NOT NULL DEFAULT 'FIXED', 
    `name` varchar(100) NOT NULL, 
    `description` varchar(255) DEFAULT NULL, 
    `startdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `enddate` datetime NOT NULL DEFAULT '2038-01-18 22:00:00', 
    PRIMARY KEY (`id`), 
) ENGINE=InnoDB; 

を持つテーブルを持っています。

INSERT INTO `fee` (`type`, `name`, `description`, `startdate`, `enddate`) 
VALUES 
    ('FIXED', 'Delivery fee', NULL, NULL, NULL); 

を挿入します:

27, FIXED, Delivery fee, NULL, NOW(), '2038-01-18 22:00:00' 

をしかし、それは挿入されますので、実行している

27, FIXED, Delivery fee, NULL, NOW(), NOW() 

は、私は、MySQL 5.5、5.6および5.7でこれを試してみました、彼らの documentationに基づく:

DEFAULT CURRENT_TIMESTAMPとON UPDATE CURRENT_Tの使用IMESTAMPはTIMESTAMPに固有です。 DEFAULT句を使用して、定数(非自動)のデフォルト値を指定することもできます。たとえば、DEFAULT 0またはDEFAULT '2000-01-01 00:00:00'となります。

質問:私は間違って何をしていますか?

+0

デフォルト値がある場合はenddateを挿入しないでください。@ caiocpricci2 –

+0

@parthmahidaそうです。それを指摘してくれてありがとう。あなたが答えとしてそれを詳しく教えてくれたら、私はそれを受け入れるでしょう。 – caiocpricci2

答えて

0

テーブル内の任意のフィールドにデフォルト値を設定するときは、実際にデフォルト値ではなく別の値を挿入したいときにのみ値を渡す必要があります。クエリでNULLを設定していましたが、CREATEクエリでINを作成しました。

`enddate` datetime NOT NULL DEFAULT '2038-01-18 22:00:00' 

「NOT NULL」に設定されています。

関連する問題