INSERT INTO nulltest (
intdef3, time2
) VALUES
(
33, NULL
);
## 1 11 22 33 2017-05-25 12:30:33 NULL
INSERT INTO nulltest (
intdef, intdef2, intdef3, time1, time2
) VALUES
(
NULL, NULL, 33, NULL, NULL
);
## error - intdef2 cannot be null
INSERT INTO nulltest (
intdef, intdef2, intdef3, time1, time2
) VALUES
(
NULL, 22, 33, NULL, NULL ## yes, I needed to default for an int, but not for a timestamp
);
## 2 NULL 22 33 2017-05-25 12:32:51 NULL
## intdef NULL became NULL, not the DEFAULT 11
## timestamp NULL became the DEFAULT CURRENT_TIMESTAMP
[/code]
Ha kicserelem a CREATE TABLE-ben:
-time1 timestamp DEFAULT CURRENT_TIMESTAMP, ## cannot be null
+time1 timestamp NULL DEFAULT CURRENT_TIMESTAMP,
Akkor viszont ugy viselkedik az INSERT INTO, mint az integernel (a VALUES timestamp NULL, akkor NULL lesz az ertek a column-ban, nem a DEFAULT CURRENT_TIMESTAMP)
MySQL 5.7.18 - macOS
- dszakal blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
In addition, you can initialize or update any TIMESTAMP (but not DATETIME) column to the current date and time by assigning it a NULL value, unless it has been defined with the NULL attribute to permit NULL values.
- A hozzászóláshoz be kell jelentkezni
Az egy pozitivum, hogy legalabb le van dokumentalva megfeleloen ez a logikatlan viselkedes.
Ettol meg viszont nem lesz logikus, hogy
- int-nel miert a NOT NULL-t, timestampnel miert a "can be NULL"-t kell kiemelni
- timestamp not nullable-kent miert veszi fel a default value-t, es kozben int not null-ablekent default value-val miert dob errort NULL-ra
- miert kotelezo a mysql 5.7-ben a timestampnek default value ha nem nullable
- mysql 5.6-ig mi volt az a default 0000-00-00 00:00:00
- A hozzászóláshoz be kell jelentkezni
> timestamp not nullable-kent miert veszi fel a default value-t, es kozben int not null-ablekent default value-val miert dob errort NULL-ra
A not nullable timestamp SET NULL-nál nem hibát dob, hanem felveszi a defaultot? Ezt nem tudtam, valóban fura.
> miert kotelezo a mysql 5.7-ben a timestampnek default value ha nem nullable
Mert nem integer, ahol értelmes lenne a 0 érték.
> mysql 5.6-ig mi volt az a default 0000-00-00 00:00:00
Balfaszság.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Koszi, 7-bol 4-be mar belefutottam
- A hozzászóláshoz be kell jelentkezni