Reputation: 6273
i am looking at some practice questions
Assume that you've just created this table: CREATE TABLE timestamptest ( ts1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, i INT ); When you look at its structure, you will notice that the TIMESTAMP column is declared NOT NULL. What happens if you insert these records: mysql> INSERT INTO timestamptest SET ts1=NULL, i=10; mysql> INSERT INTO timestamptest SET ts1=0, i=11; mysql> INSERT INTO timestamptest SET ts1='', i=12;
the ans is
Only the first statement succeeds, and the TIMESTAMP column is set to the current date and time. The other two statements give an error: mysql> INSERT INTO timestamptest SET ts1=NULL, i=10; Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO timestamptest SET ts1=0, i=11; ERROR 1292 (22007): Incorrect datetime value: '0' for column 'ts1' at row 1 mysql> INSERT INTO timestamptest SET ts1='', i=12; ERROR 1292 (22007): Incorrect datetime value: '' for column 'ts1' at row 1
but when i tried, inserting ts1=0 works, it inserts a zero value timestamp ... is the answer wrong?
Upvotes: 0
Views: 2014
Reputation: 152807
It depends whether the NO_ZERO_DATE
option is set:
mysql> create table foo(x timestamp);
Query OK, 0 rows affected (0.01 sec)
mysql> set sql_mode='';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into foo values(0);
Query OK, 1 row affected (0.00 sec)
mysql> set sql_mode='strict_all_tables,no_zero_date';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into foo values(0);
ERROR 1292 (22007): Incorrect datetime value: '0' for column 'x' at row 1
Upvotes: 4